站長資訊網
最全最豐富的資訊網站

介紹golang gorm操作mysql及gorm基本用法

下面由golang教程欄目給大家介紹golang gorm操作mysql及gorm基本用法,希望對需要的朋友有所幫助!

golang 官方的那個操作mysql的有點麻煩所以就使用了gorm,下面就gorm的使用做下簡單介紹

下載gorm:

go get -u github.com/jinzhu/gorm

在項目中引入gorm:

import (  "github.com/jinzhu/gorm"  _ "github.com/jinzhu/gorm/dialects/mysql" )

定義db連接信息

func DbConn(MyUser, Password, Host, Db string, Port int) *gorm.DB {  connArgs := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", MyUser,Password, Host, Port, Db )  db, err := gorm.Open("mysql", connArgs)  if err != nil {   log.Fatal(err)  }  db.SingularTable(true)  return db }

由于grom是使用的orm映射,所以需要定義要操作的表的model,在go中需要定義一個struct, struct的名字就是對應數據庫中的表名,注意gorm查找struct名對應數據庫中的表名的時候會默認把你的struct中的大寫字母轉換為小寫并加上“s”,所以可以加上 db.SingularTable(true) 讓grom轉義struct名字的時候不用加上s。我是提前在數據庫中創建好表的然后再用grom去查詢的,也可以用gorm去創建表,我感覺還是直接在數據庫上創建,修改表字段的操作方便,grom只用來查詢和更新數據。

假設數據庫中的表已經創建好,下面是數據庫中的建表語句:

CREATE TABLE `xz_auto_server_conf` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `group_zone` varchar(32) NOT NULL COMMENT '大區例如:wanba,changan,aiweiyou,360',  `server_id` int(11) DEFAULT '0' COMMENT '區服id',  `server_name` varchar(255) NOT NULL COMMENT '區服名稱',  `open_time` varchar(64) DEFAULT NULL COMMENT '開服時間',  `service` varchar(30) DEFAULT NULL COMMENT '環境,test測試服,formal混服,wb玩吧',  `username` varchar(100) DEFAULT NULL COMMENT 'data管理員名稱',  `submit_date` datetime DEFAULT NULL COMMENT '記錄提交時間',  `status` tinyint(2) DEFAULT '0' COMMENT '狀態,0未處理,1已處理,默認為0',  PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

定義model,即struct, 定于struct時我們可以只定義我們需要從數據庫中取回的特定字段:

gorm在轉義表名的時候會把stuct的大寫字母(首字母除外) 替換成“_”,所以下面的"XzAutoServerConf "會轉義成數數據庫中對應“xz_auto_server conf”的表名, 對應的字段名的查找會先按照tag里面的名稱去里面查找,如果沒有定義標簽則按照struct定義的字段查找,查找的時候struct字段中的大寫會被轉義成“ ”,例“GroupZone”會去查找表中的group_zone字段

//定義struct type XzAutoServerConf struct {  GroupZone string `gorm:"column:group_zone"`  ServerId int  OpenTime string  ServerName string  Status int }
//定義數據庫連接 type ConnInfo struct {  MyUser string  Password string  Host string  Port int  Db string }  func main () { cn := ConnInfo{   "root",   123456",   "127.0.0.1",   3306,   "xd_data",  }   db := DbConn(cn.MyUser,cn.Password,cn.Host,cn.Db,cn.Port)   defer db.Close() // 關閉數據庫鏈接,defer會在函數結束時關閉數據庫連接  var rows []api.XzAutoServerConf //select  db.Where("status=?", 0).Select([]string{"group_zone", "server_id", "open_time", "server_name"}).Find(&rows) //update  err := db.Model(&rows).Where("server_id=?", 80).Update("status", 1).Error  if err !=nil {  fmt.Println(err)  } fmt.Println(rows) }

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产在线精品一区免费香蕉| 亚洲欧美日韩综合久久久久| 久久久久人妻精品一区二区三区| 久夜色精品国产一区二区三区| 全国精品一区二区在线观看| 中文字幕日韩在线观看| 蜜桃精品免费久久久久影院| 亚洲日韩精品无码专区加勒比| 精品国产乱子伦一区二区三区 | 国产精品福利一区| 国产乱码精品一区二区三区 | 国产精品一区二区三区99| 日韩国产精品亚洲а∨天堂免| 四虎永久在线精品视频免费观看| 精品国产一区二区麻豆| 思思久久96热在精品国产| 一本色道久久综合亚洲精品蜜桃冫 | 精品视频在线观看你懂的一区 | 国产精品白丝AV网站| 国产精品亚洲成在人线| 一本一本久久aa综合精品| 国产日韩精品SUV| 亚洲国产一二三精品无码| 国产揄拍国产精品| 亚洲精品蜜桃久久久久久| 手机在线观看精品国产片| 伊人精品久久久大香线蕉99| 97久久精品国产精品青草| 99精品久久精品一区二区| 兽交精品99高清毛片| 亚洲一区精品无码| 精品一区二区久久| 久久精品中文字幕首页| 久久99精品久久久久久首页 | 性虎精品无码AV导航| 久久精品国产亚洲av品善| 国内精品在线播放| 国产精品久久久久久久久99热| 北岛玲在线精品视频| 日韩内射美女片在线观看网站| 日韩精品一卡2卡3卡4卡新区乱码|