gorm 查詢分頁(yè)
在編寫其他語(yǔ)言框架代碼的時(shí)候禾酱,使用limit語(yǔ)法糖 都是limit(a,b) 而看了grom的文檔發(fā)現(xiàn),limit(a) 只接受一個(gè)參數(shù) 仔細(xì)看了下 才發(fā)現(xiàn)是這樣的
pageindex := 1
pagesize := 5
db.Model(&Model.User{}).Offset((pageindex-1)*pagesize).Limit(pagesize)
一般我們查詢分頁(yè) 也會(huì)給前端返回總數(shù) 我覺得比較省事的方法
userdb := db.Model(&Model.User{}).Where(&Model.User{Age:12})
var count int32
userdb.Count(&count) //總行數(shù)
pageindex := 1
pagesize := 5
UserList := []Model.User{}
userdb.Offset((pageindex-1)*pagesize).Limit(pagesize).Find(&UserList) //查詢pageindex頁(yè)的數(shù)據(jù)
gorm 空和0 無(wú)法更新的問(wèn)題
假如我想更新user表的個(gè)性簽名為空的話 或者狀態(tài)為0的話 使用Updates(User{Name: "", Age: 0, Actived: false}) 是無(wú)法更新上去的批钠,打印debug 也會(huì)看到sql語(yǔ)句并帶有更新這些字段
// WARNING when update with struct, GORM will only update those fields that with non blank value
// For below Update, nothing will be updated as "", 0, false are blank values of their types
db.Model(&user).Updates(User{Name: "", Age: 0, Actived: false})
所以后來(lái)我的解決辦法就是 使用 map[string]interface{}{Name: "", Age: 0, Actived: false}
db.Model(&user).Updates(map[string]interface{}{Name: "", Age: 0, Actived: false})