日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql连接 xorm_golang 使用xorm操作mysql

發布時間:2024/3/24 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql连接 xorm_golang 使用xorm操作mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

xorm

官方介紹:xorm是一個簡單而強大的Go語言ORM庫. 通過它可以使數據庫操作非常簡便。xorm的目標并不是讓你完全不去學習SQL,我們認為SQL并不會為ORM所替代,但是ORM將可以解決絕大部分的簡單SQL需求。xorm支持兩種風格的混用。

xorm還提供了工具,通過reverse命令根據數據庫的表結構生成對應的struct,省去了人工組織代碼的工作,十分方便。

官方地址:https://xorm.io/

中文文檔:https://books.studygolang.com...

安裝

瀏覽xorm的github地址,我們要下載2個包,https://github.com/go-xorm

1、xorm驅動包,我們使用xorm的核心包

2、cmd工具包,用于使用reverse命令生成數據表對應的struct

通過go get命令分別下載2個包

go get github.com/go-xorm/xorm

go get github.com/go-xorm/cmd

下載完成后github.com文件夾下會出現go-xorm包

生成數據結構struct

本地數據庫test有2張數據表,doctor_tb和user_tb,數據結構如下:

我們現在就來生成這2張數據表的結構模型。

1、在任意項目下新建一個文件夾xorm_models,文件名沒有規定,為了存放生成的代碼文件。

2、拷貝cmd工具包中的摸板目錄到xorm_models下,在文件目錄github.com\go-xorm\cmd\xorm\templates\goxorm下

config是生成的配置信息,struct.go.tpl是數據摸板,允許自定義,可以根據自己的項目需求,修改摸板。一般不需要修改。

3、打開cmd命令行窗口,進入xorm_models目錄下,執行reverse命令:xorm reverse [數據庫類型] [數據庫連接串] [模板目錄]

xorm reverse mysql root:112233@tcp(127.0.0.1:3305)/test?charset=utf8 templates/goxorm

4、數據結構代碼會自動生成在xorm_models/models目錄下.

我們能看到生成了和表名同名的2個數據結構文件doctor_tb.go和user_tb.go

package models

import (

"time"

)

type DoctorTb struct {

Id int `xorm:"not null pk autoincr INT(11)"`

Name string `xorm:"default '' comment('姓名') VARCHAR(50)"`

Age int `xorm:"default 0 comment('年齡') INT(11)"`

Sex int `xorm:"default 0 comment('性別') INT(11)"`

Addtime time.Time `xorm:"DATETIME"`

}

使用xorm

xorm支持鏈式的寫法

engine.Where("age > ?", 40).Or("name like ?", "林%").OrderBy("Id desc").Find(&docList2)

也支持直接執行sql語句

engine.SQL("select * from doctor_tb where age > ?", 40).Find(&docList4)

附上增刪改查事務的demo例子,代碼里都有注釋,很容易看懂。xorm的封裝比較友好,只要熟悉sql語句,即便不看文檔,也能順利的使用各種關鍵字。

package main

import (

"fmt"

_ "github.com/go-sql-driver/mysql"

"github.com/go-xorm/xorm"

"goShare/xorm_models/models"

"time"

)

func main() {

var engine *xorm.Engine

//連接數據庫

engine, err := xorm.NewEngine("mysql", "root:112233@tcp(127.0.0.1:3305)/test?charset=utf8")

if err != nil {

fmt.Println(err)

return

}

//連接測試

if err := engine.Ping(); err != nil {

fmt.Println(err)

return

}

defer engine.Close() //延遲關閉數據庫

fmt.Println("數據庫鏈接成功")

//查詢單條數據

var doc models.DoctorTb

b, _ := engine.Where("name = ?", "鐘南山").Get(&doc)

if b {

fmt.Println(doc)

} else {

fmt.Println("數據不存在")

}

//查詢單條數據方式2 會根據結構體的

doc2 := models.DoctorTb{Name: "鐘南山"}

b, _ = engine.Get(&doc2)

fmt.Println(doc2)

//新增數據

doc3 := models.DoctorTb{0, "王醫生", 48, 1, time.Now()}

i3, _ := engine.InsertOne(doc3)

fmt.Println("新增結果:", i3)

//查詢列表

docList := make([]models.DoctorTb, 0)

engine.Where("age > ? or name like ?", 40, "林%").Find(&docList)

fmt.Println("docList:", docList)

//查詢列表方式2

docList2 := make([]models.DoctorTb, 0)

engine.Where("age > ?", 40).Or("name like ?", "林%").OrderBy("Id desc").Find(&docList2)

fmt.Println("docList2:", docList2)

//查詢分頁

docList3 := make([]models.DoctorTb, 0)

page := 0 //頁索引

pageSize := 2 //每頁數據

limit := pageSize

start := page * pageSize

totalCount, err := engine.Where("age > ? or name like ?", 40, "林%").Limit(limit, start).FindAndCount(&docList3)

fmt.Println("總記錄數:", totalCount, "docList3:", docList3)

//直接用語句查詢

docList4 := make([]models.DoctorTb, 0)

engine.SQL("select * from doctor_tb where age > ?", 40).Find(&docList4)

fmt.Println("docList4:", docList4)

//刪除

docDel := models.DoctorTb{Name: "王醫生"}

iDel, _ := engine.Delete(&docDel)

fmt.Println("刪除結果:", iDel)

//刪除方式2

engine.Exec("delete from doctor_tb where Id = ?", 3)

//更新數據

doc5 := models.DoctorTb{Name: "鐘醫生"}

//更新數據ID為2的記錄名字更改為“鐘醫生”

iUpdate, _ := engine.Id(2).Update(&doc5)

fmt.Println("更新結果:", iUpdate)

//指定表名查詢.Table()

user := models.UserTb{Id: 2}

b, _ = engine.Table("user_tb").Get(&user)

fmt.Println(user)

//事務

session := engine.NewSession()

defer session.Close()

err = session.Begin()

_, err = session.Exec("delete from doctor_tb where Id = ?", 6)

if err != nil {

session.Rollback()

return

}

_, err = session.Exec("delete from user_tb where Id = ?", 10)

if err != nil {

session.Rollback()

return

}

err = session.Commit()

if err != nil {

return

}

fmt.Println("事務執行成功")

}

總結

歸納下使用流程

1、下載xorm包和cmd工具包

2、復制cmd工具包里的模板代碼文件夾至生成目錄底下

3、使用reverse生成數據結構代碼,省去苦力活

4、實例引擎xorm.NewEngine()

5、痛快的調用

demo里提供了我們開發業務上常用的增,刪,改,查單條數據,查列表,查分頁,事務等內容。

如果文章對你有用,請點個贊。

有疑問加站長微信聯系(非本文作者)

總結

以上是生活随笔為你收集整理的mysql连接 xorm_golang 使用xorm操作mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91麻豆成人精品国产免费网站 | 精品一区二区三区无码按摩 | 在线观看的av网站 | 国产精品女人久久久 | 亚洲一级片网站 | 丁香花高清在线 | 免费精品无码AV片在线观看黄 | 性生交大片免费看3p | 国产91片 | 亚洲午夜小视频 | 少妇激情一区二区三区视频 | 国产 欧美 自拍 | 亚洲日本精品视频 | 天堂99 | 中文字幕一区二区在线视频 | 97人人干| 色综合影视 | 麻豆影视在线免费观看 | 国产精品无码av在线有声小说 | 全部免费毛片 | 色噜噜综合网 | 四虎影酷 | 在线视频日本 | 亚洲精品美女网站 | 国产又黄又大又粗的视频 | 国产高清欧美 | 97超碰在线资源 | 浪荡奴双性跪着伺候 | 青青国产在线视频 | 亚洲精品aaaa | 国产成人综合在线 | 好吊色在线视频 | 热久久精品免费视频 | 我和单位漂亮少妇激情 | 日韩少妇裸体做爰视频 | 国产精品视频一 | 久久99精品久久久久子伦 | 182tv福利视频| 亚洲一区二区三区在线视频观看 | 国产视频h | 一区二区三区四区高清视频 | 欧美一区二区三区激情视频 | 天天爽天天摸 | 窝窝午夜精品一区二区 | 日本少妇bbb | 欧日韩不卡在线视频 | 欧美群交射精内射颜射潮喷 | 五月香婷婷 | 大吊一区二区三区 | 一本一道久久综合狠狠老精东影业 | 国产r级在线观看 | 成人美女在线观看 | 婷婷激情图片 | 饥渴放荡受np公车奶牛 | 久久色在线视频 | 免费在线小视频 | 精品国产一级 | 制服诱惑一区二区 | 国产精品扒开腿做爽爽 | 亚洲在线电影 | 手机在线小视频 | av在线在线 | 国产婷婷色一区二区三区 | 91精东传媒理伦片在线观看 | 国产无码精品久久久 | 国产成人影视 | 久草网在线视频 | 亚洲毛片网站 | 日本免费中文字幕 | 成人动漫在线免费观看 | 亚洲激情视频在线 | 亚洲成人久久久 | 中国美女一级看片 | 色图自拍 | 欧美一区二区黄片 | 亚洲综合av一区二区 | 黄金网站在线观看 | 国产精品theporn动漫 | 亚洲国产精彩中文乱码av | 国产黄色片子 | 中国av免费看 | 亚洲人女屁股眼交6 | 午夜福利电影 | 人人上人人干 | 波多野结衣视频一区 | 日韩精品在线一区二区三区 | xxxxx亚洲 | 欧洲精品久久一区二区 | 日韩三级网 | 国产无遮挡又黄又爽又色 | 牛牛av| 亚洲色图视频在线观看 | 自拍第一页 | 自拍偷拍小视频 | 青春草免费视频 | 精品一区二区三区免费观看 | 能在线观看的av网站 | 欧美区一区 | 亚洲精品乱码久久久久久按摩观 |