日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GORM的简单理解

發布時間:2025/3/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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語句

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的GORM的简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。