go gorm指定别名_GORM入门指南
gorm是一個使用Go語言編寫的ORM框架。它文檔齊全,對開發(fā)者友好,支持主流數(shù)據(jù)庫。
gorm介紹
GORM?gorm.io內(nèi)含十分齊全的中文文檔,有了它你甚至不需要再繼續(xù)向下閱讀本文。
安裝
go get -u github.com/jinzhu/gorm連接數(shù)據(jù)庫
連接不同的數(shù)據(jù)庫都需要導(dǎo)入對應(yīng)數(shù)據(jù)的驅(qū)動程序,GORM已經(jīng)貼心的為我們包裝了一些驅(qū)動程序,只需要按如下方式導(dǎo)入需要的數(shù)據(jù)庫驅(qū)動即可
import _ "github.com/jinzhu/gorm/dialects/mysql" // import _ "github.com/jinzhu/gorm/dialects/postgres" // import _ "github.com/jinzhu/gorm/dialects/sqlite" // import _ "github.com/jinzhu/gorm/dialects/mssql"連接MySQL
import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )func main() {db, err := gorm.Open("mysql", "user:password@(localhost)/dbname?charset=utf8mb4&parseTime=True&loc=Local")defer db.Close() }連接PostgreSQL
基本代碼同上,注意引入對應(yīng)postgres驅(qū)動并正確指定gorm.Open()參數(shù)
import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/postgres" )func main() {db, err := gorm.Open("postgres", "host=myhost port=myport user=gorm dbname=gorm password=mypassword")defer db.Close() }連接Sqlite3
基本代碼同上,注意引入對應(yīng)sqlite驅(qū)動并正確指定gorm.Open()參數(shù)
import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/sqlite" )func main() {db, err := gorm.Open("sqlite3", "/tmp/gorm.db")defer db.Close() }連接SQL Server
基本代碼同上,注意引入對應(yīng)mssql驅(qū)動并正確指定gorm.Open()參數(shù)。
import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mssql" )func main() {db, err := gorm.Open("mssql", "sqlserver://username:password@localhost:1433?database=dbname")defer db.Close() }GORM操作MySQL
package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )// UserInfo 用戶信息 type UserInfo struct {ID uintName stringGender stringHobby string }func main() {db, err := gorm.Open("mysql", "root:root1234@(127.0.0.1:13306)/db1?charset=utf8mb4&parseTime=True&loc=Local")if err!= nil{panic(err)}defer db.Close()// 自動遷移db.AutoMigrate(&UserInfo{})u1 := UserInfo{1, "七米", "男", "籃球"}u2 := UserInfo{2, "沙河娜扎", "女", "足球"}// 創(chuàng)建記錄db.Create(&u1)db.Create(&u2)// 查詢var u = new(UserInfo)db.First(u)fmt.Printf("%#vn", u)var u UserInfodb.Find(&uu, "hobby=?", "足球")fmt.Printf("%#vn", uu)// 更新db.Model(&u).Update("hobby", "雙色球")// 刪除db.Delete(&u) }GORM Model定義
在使用ORM工具時,通常我們需要在代碼中定義模型(Models)與數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行映射,在GORM中模型(Models)通常是正常定義的結(jié)構(gòu)體、基本的go類型或它們的指針。 同時也支持sql.Scanner及driver.Valuer接口(interfaces)。
gorm.Model
為了方便模型定義,GORM內(nèi)置了一個gorm.Model結(jié)構(gòu)體。gorm.Model是一個包含了ID,CreatedAt,UpdatedAt,DeletedAt四個字段的Golang結(jié)構(gòu)體。
// gorm.Model 定義 type Model struct {ID uint `gorm:"primary_key"`CreatedAt time.TimeUpdatedAt time.TimeDeletedAt *time.Time }你可以將它嵌入到你自己的模型中:
// 將 `ID`, `CreatedAt`, `UpdatedAt`, `DeletedAt`字段注入到`User`模型中 type User struct {gorm.ModelName string }當(dāng)然你也可以完全自己定義模型:
// 不使用gorm.Model,自行定義模型 type User struct {ID intName string }模型定義示例
type User struct {gorm.ModelName stringAge sql.NullInt64Birthday *time.TimeEmail string `gorm:"type:varchar(100);unique_index"`Role string `gorm:"size:255"` // 設(shè)置字段大小為255MemberNumber *string `gorm:"unique;not null"` // 設(shè)置會員號(member number)唯一并且不為空Num int `gorm:"AUTO_INCREMENT"` // 設(shè)置 num 為自增類型Address string `gorm:"index:addr"` // 給address字段創(chuàng)建名為addr的索引IgnoreMe int `gorm:"-"` // 忽略本字段 }總結(jié)
以上是生活随笔為你收集整理的go gorm指定别名_GORM入门指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python mkl freebsd_f
- 下一篇: 吴麒pdf 自动控制原理下_设施大棚灌溉