GORM的简单理解
? ? ? ? 1、GORM是一種對象關系映射ORM框架,數據表對應結構體,數據行對應結構體實例,數據庫字段對應結構體字段。
在gorm中,表名默認就是結構體名稱的復數,也可以通過方法或者db.Table("表名")自定義表名;
列名由兩個單詞組成,在數據庫中默認轉小寫后用下劃線鏈接;
如果結構體有ID字段則默認ID字段為主鍵。
? ? ? ? 2、另外,GORM內置了一個gorm.Model結構體。gorm.Model是一個包含了ID, CreatedAt, UpdatedAt, DeletedAt四個字段的Golang結構體,可以將其嵌入到自己的結構體中。(如果模型內置了gorm.model有DeletedAt字段,則調用Delete刪除該記錄時,將會設置DeletedAt字段為當前時間,而不是直接將記錄從數據庫中刪除,即軟刪除)
????????3、gorm中支持的結構體tag:
Type?? ?指定列數據類型
Size?? ?指定列大小, 默認值255
PRIMARY_KEY?? ?將列指定為主鍵
UNIQUE?? ?將列指定為唯一
NOT NULL?? ?將列指定為非 NULL
Column?? ?指定列名
default ?設置默認值
????????4、例子:
查詢db.Select("name, age").Order("age desc").Limit(3).Find(&user, "name = ?", "jinzhu") db.Select("name, age").Order("age desc").Limit(3).Where("name = ?","jinzhu").Find(&users)修改 // 根據給定的條件更新單個屬性 db.Model(&user).Where("active = ?", true).Update("name", "hello") // 使用 map 更新多個屬性,只會更新其中有變化的屬性 db.Model(&user).Updates(map[string]interface{}{"name": "hello", "age": 18, "active": false}) // 使用 struct 更新多個屬性,只會更新其中有變化且為非零值的字段 db.Model(&user).Updates(User{Name: "hello", Age: 18})如果你想更新或忽略某些字段,你可以使用 Select,Omit刪除 db.Where("email LIKE ?", "%jinzhu%").Delete(Email{}) db.Delete(Email{}, "email LIKE ?", "%jinzhu%")????????在 GORM 中使用多個立即執行方法時,后一個立即執行方法會復用前一個立即執行方法的條件 (不包括內聯條件,find中寫的條件) 。立即執行方法是指那些會立即生成SQL語句并發送到數據庫的方法,一般是CRUD方法,如:Create, First, Find, Take, Save, UpdateXXX, Delete, Scan, Row, Rows…
5、db.debug? 可以返回查詢的sql語句
總結
- 上一篇: 华为反击!要求美国运营商巨头支付 10
- 下一篇: 手把手实现一条延时消息