安裝gorm
go get github.com/jinzhu/gorm
安裝mysql
go get github.com/jinzhu/gorm/dialects/mysql
模型是标準的 struct,由 go 的基本資料類型、實作了 scanner 和 valuer 接口的自定義類型及其指針或别名組成 由于grom是使用的orm映射,是以需要定義要操作的表的model,在go中需要定義一個struct gorm 傾向于約定,而不是配置。預設情況下,gorm 使用 id 作為主鍵,使用結構體名的 蛇形複數 作為表名,字段名的 蛇形 作為列名,并使用 createdat、updatedat 字段追蹤建立、更新時間 模型和資料的對應關系:
<col>
sql
go
資料表
結構體
資料行
結構體執行個體
字段
結構體自段
聲明 model 時,tag 是可選的,gorm 支援以下 tag: tag 名大小寫不敏感,但建議使用 camelcase 風格
标簽名
說明
column
指定 db 列名
type
列資料類型,推薦使用相容性好的通用類型,例如:所有資料庫都支援 bool、int、uint、float、string、time、bytes 并且可以和其他标簽一起使用,例如:not null、size, autoincrement… 像 varbinary(8) 這樣指定資料庫資料類型也是支援的。在使用指定資料庫資料類型時,它需要是完整的資料庫資料類型,如:mediumint unsigned not null auto_increment
size
指定列大小,例如:size:256
primarykey
指定列為主鍵
unique
指定列為唯一
default
指定列的預設值
precision
指定列的精度
scale
指定列大小
not null
指定列為 not null
autoincrement
指定列為自動增長
autoincrementincrement
自動步長,控制連續記錄之間的間隔
embedded
嵌套字段
embeddedprefix
嵌入字段的列名字首
autocreatetime
建立時追蹤目前時間,對于 int 字段,它會追蹤秒級時間戳,您可以使用 nano/milli 來追蹤納秒、毫秒時間戳,例如:autocreatetime:nano
autoupdatetime
建立/更新時追蹤目前時間,對于 int 字段,它會追蹤秒級時間戳,您可以使用 nano/milli 來追蹤納秒、毫秒時間戳,例如:autoupdatetime:milli
index
根據參數建立索引,多個字段使用相同的名稱則建立複合索引,檢視 索引 擷取詳情
uniqueindex
與 index 相同,但建立的是唯一索引
check
建立檢查限制,例如 check:age > 13,檢視 限制 擷取詳情
<-
設定字段寫入的權限, <-:create 隻建立、<-:update 隻更新、<-:false 無寫入權限、<- 建立和更新權限
->
設定字段讀的權限,->:false 無讀權限
-
忽略該字段,- 無讀寫權限
comment
遷移時為字段添加注釋
執行結果:資料庫建立一張名為user_infos的新表,并插入一條資料。新表名是根據struct的名字,将多個單詞用“_”連接配接,最後加上s組成。
完整代碼