<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                > GORM是Golang目前比較熱門的數據庫ORM操作庫,對開發者也比較友好,使用非常方便簡單 [TOC] ## 安裝依賴包 ~~~ //安裝MySQL驅動 go get github.com/go-sql-driver/mysql //安裝gorm包 go get github.com/jinzhu/gorm ~~~ ## 導入依賴包 ~~~ import ( //導入MYSQL數據庫驅動,這里使用的是GORM庫封裝的MYSQL驅動導入包,實際上大家看源碼就知道,這里等價于導入github.com/go-sql-driver/mysql //這里導入包使用了 _ 前綴代表僅僅是導入這個包,但是我們在代碼里面不會直接使用。 _ "github.com/jinzhu/gorm/dialects/mysql" //導入gorm "github.com/jinzhu/gorm" ) ~~~ ## 創建User表 ~~~ CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `username` varchar(30) NOT NULL COMMENT '賬號', `password` varchar(100) NOT NULL COMMENT '密碼', `createtime` int(10) NOT NULL DEFAULT 0 COMMENT '創建時間', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ~~~ ## 簡單例子 ~~~ package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "time" ) //定義User模型,綁定user表,ORM庫操作數據庫,需要定義一個struct類型和MYSQL表進行綁定或者叫映射,struct字段和MYSQL表字段一一對應 //在這里User類型可以代表mysql user表 type User struct { //通過在字段后面的標簽說明,定義golang字段和表字段的關系 //例如 `gorm:"column:username"` 標簽說明含義是: Mysql表的列名(字段名)為username //這里golang定義的Username變量和MYSQL表字段username一樣,他們的名字可以不一樣。 Username string `gorm:"column:username"` Password string `gorm:"column:password"` //創建時間,時間戳 CreateTime int64 `gorm:"column:createtime"` } //設置表名,可以通過給struct類型定義 TableName函數,返回當前struct綁定的mysql表名是什么 func (u User) TableName() string { //綁定MYSQL表名為user return "user" } func main() { //配置MySQL連接參數 username := "gintest" //賬號 password := "gin123456" //密碼 host := "127.0.0.1" //數據庫地址,可以是Ip或者域名 port := 3306 //數據庫端口 Dbname := "gintest" //數據庫名 //通過前面的數據庫參數,拼接MYSQL DSN, 其實就是數據庫連接串(數據源名稱) //MYSQL dsn格式: {username}:{password}@tcp({host}:{port})/{Dbname}?charset=utf8&parseTime=True&loc=Local //類似{username}使用花括號包著的名字都是需要替換的參數 dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", username, password, host, port, Dbname) //連接MYSQL db, err := gorm.Open("mysql", dsn) if err != nil { panic("連接數據庫失敗, error=" + err.Error()) } //定義一個用戶,并初始化數據 u := User{ Username:"tizi365", Password:"123456", CreateTime:time.Now().Unix(), } //插入一條用戶數據 //下面代碼會自動生成SQL語句:INSERT INTO `user` (`username`,`password`,`createtime`) VALUES ('tizi365','123456','1540824823') if err := db.Create(u).Error; err != nil { fmt.Println("插入失敗", err) return } //查詢并返回第一條數據 //定義需要保存數據的struct變量 u = User{} //自動生成sql: SELECT * FROM `user` WHERE (username = 'tizi365') LIMIT 1 isNotFound := db.Where("username = ?", "tizi365").Take(&u).RecordNotFound() if isNotFound { fmt.Println("找不到記錄") return } //打印查詢到的數據 fmt.Println(u.Username,u.Password) //更新 //自動生成Sql: UPDATE `user` SET `password` = '654321' WHERE (username = 'tizi365') db.Model(User{}).Where("username = ?", "tizi365").Update("password", "654321") //刪除 //自動生成Sql: DELETE FROM `user` WHERE (username = 'tizi365') db.Where("username = ?", "tizi365").Delete(User{}) } ~~~ ## gorm錯誤處理 > gorm庫在執行數據庫操作的時候,如果出現錯誤,則會更新gorm.DB的Error屬性,Error屬性默認為nil,因此在執行數據庫操作后檢測下Error屬性是否為nil即可知道有沒有錯誤發生 ~~~ //插入記錄后,檢測Error是否為nil if err := db.Create(u).Error; err != nil { fmt.Println("插入失敗", err) return } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看