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

介紹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视频精品在线| 国产精品VA在线观看无码不卡| 国产三级精品视频| 精品久久久久久久无码久中文字幕| 久久精品亚洲AV久久久无码| 亚洲国产精品国自产电影| 九九热在线精品视频| 99免费精品视频| 久久精品国产精品亚洲下载| 亚洲国产精品日韩专区AV| 日韩在线观看高清视频| 亚洲日韩中文在线精品第一 | 四虎永久在线精品波多野结衣 | 久久精品人人槡人妻人人玩AV | 免费精品人在线二线三线区别| 国产成人亚洲精品| 日本一二三精品黑人区| 精品国精品国产自在久国产应用| 亚洲国产美女精品久久| 91大神精品全国在线观看| 亚洲国产精品午夜电影| 亚洲AV无码乱码麻豆精品国产 | WWW国产精品内射老师| 亚洲一区精品伊人久久伊人| 国产精品成人小电影在线观看 | 国产亚洲精品成人AA片新蒲金| 国内精品国语自产拍在线观看| 9久热精品免费观看视频| 久久久99精品一区二区| 久久精品夜色噜噜亚洲A∨| 伊人精品久久久大香线蕉99| 欧洲熟妇精品视频| 久久99精品国产一区二区三区| 国产成人精品一区二区秒拍 | 亚洲熟妇无码久久精品| 2021最新久久久视精品爱| 国产精品反差婊在线观看| 国产愉拍精品手机| 国产精品三级av及在线观看| 亚洲AV无码之日韩精品| 日韩免费观看的一级毛片|