1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      golang中g(shù)orm操作mysql及gorm的示例分析

      這篇文章給大家分享的是有關(guān)golang中g(shù)orm操作MySQL及gorm的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

      創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比德陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式德陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋德陽地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

      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的名字就是對應(yīng)數(shù)據(jù)庫中的表名,注意gorm查找struct名對應(yīng)數(shù)據(jù)庫中的表名的時候會默認(rèn)把你的struct中的大寫字母轉(zhuǎn)換為小寫并加上“s”,所以可以加上 db.SingularTable(true) 讓grom轉(zhuǎn)義struct名字的時候不用加上s。我是提前在數(shù)據(jù)庫中創(chuàng)建好表的然后再用grom去查詢的,也可以用gorm去創(chuàng)建表,我感覺還是直接在數(shù)據(jù)庫上創(chuàng)建,修改表字段的操作方便,grom只用來查詢和更新數(shù)據(jù)。

      假設(shè)數(shù)據(jù)庫中的表已經(jīng)創(chuàng)建好,下面是數(shù)據(jù)庫中的建表語句:

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

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

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

      //定義struct
      type XzAutoServerConf struct {
       GroupZone string `gorm:"column:group_zone"`
       ServerId int
       OpenTime string
       ServerName string
       Status int
      }
      //定義數(shù)據(jù)庫連接
      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() // 關(guān)閉數(shù)據(jù)庫鏈接,defer會在函數(shù)結(jié)束時關(guān)閉數(shù)據(jù)庫連接
       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)
      }

      更多grom操作可以參考: https://jasperxu.github.io/gorm-zh/

      下面看下Golang GORM使用

      gorm

      gorm是go語言中實現(xiàn)數(shù)據(jù)庫訪問的ORM(對象關(guān)系映射)庫。使用這個庫,我們可以利用面向?qū)ο蟮姆椒ǎ臃奖愕膶?shù)據(jù)庫中的數(shù)據(jù)進行CRUD(增刪改查)。

      基本使用

      下載依賴

      go get github.com/jinzhu/gorm
      go get github.com/go-sql-driver/mysql

      第一個是核心庫。

      第二個是mysql驅(qū)動包。

      連接數(shù)據(jù)庫

      packae main
      import (
       "github.com/jinzhu/gorm"
       _ "github.com/jinzhu/gorm/dialects/mysql"
       "fmt"
      )
      func main() {
       db, err := gorm.Open("mysql",
       "root:root@/test?charset=utf8&parseTime=True&loc=Local")
      
       if err != nil {
        fmt.Println(err)
        return
       }else {
        fmt.Println("connection succedssed")
       }
       defer db.Close()

      新增數(shù)據(jù)

      type User struct {
       ID  int   `gorm:"primary_key"`
       Name string   `gorm:"not_null"`
      }
      func add() {
       user := &User{Name:"zhangsan"}
       db.Create(user)
      }

      刪除數(shù)據(jù)

      user := &User{ID:1}
      db.delete(user)

      更新數(shù)據(jù)

      user := &User{ID:1}
      db.Model(user).update("Name","lisi")

      查詢數(shù)據(jù)

      // query all
      var users []User
      db.Find(&users)
      fmt.Println(users)
      // query one
      user := new (User)
      db.First(user,1)
      fmt.Println(user)

      其它

      判斷數(shù)據(jù)庫中是否有結(jié)構(gòu)體對應(yīng)的表:

      db.HasTable(User{})

      創(chuàng)建表

      db.CreateTable(User{})

      以上就是gorm基本的用法。

      golang的優(yōu)點

      golang是一種編譯語言,可以將代碼編譯為機器代碼,編譯后的二進制文件可以直接部署到目標(biāo)機器而無需額外的依賴,所以golang的性能優(yōu)于其他的解釋性語言,且可以在golang中使用goroutine來實現(xiàn)并發(fā)性,它提供了一個非常優(yōu)雅的goroutine調(diào)度程序系統(tǒng),可以很容易地生成數(shù)百萬個goroutine。

      感謝各位的閱讀!關(guān)于“golang中g(shù)orm操作mysql及gorm的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


      網(wǎng)站題目:golang中g(shù)orm操作mysql及gorm的示例分析
      網(wǎng)站路徑:http://www.ef60e0e.cn/article/pjgdde.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        梁河县| 扎鲁特旗| 昌江| 隆尧县| 澜沧| 平江县| 庆安县| 托克逊县| 浙江省| 巴林左旗| 陆川县| 灌云县| 宣城市| 稻城县| 静乐县| 中牟县| 吴川市| 常州市| 盐山县| 蒲江县| 吴旗县| 卢湾区| 定陶县| 东乡| 亚东县| 绍兴市| 娄烦县| 东乡族自治县| 子长县| 泸州市| 东光县| 辰溪县| 海原县| 集贤县| 崇义县| 呼和浩特市| 房产| 秦皇岛市| 罗田县| 罗平县| 普兰县|