天天看點

go學習-gorm

安裝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 &gt; 13,檢視 限制 擷取詳情

&lt;-

設定字段寫入的權限, &lt;-:create 隻建立、&lt;-:update 隻更新、&lt;-:false 無寫入權限、&lt;- 建立和更新權限

-&gt;

設定字段讀的權限,-&gt;:false 無讀權限

-

忽略該字段,- 無讀寫權限

comment

遷移時為字段添加注釋

執行結果:資料庫建立一張名為user_infos的新表,并插入一條資料。新表名是根據struct的名字,将多個單詞用“_”連接配接,最後加上s組成。

go學習-gorm
go學習-gorm
go學習-gorm
go學習-gorm

完整代碼