gorm多个不定查询字段\分页查询

gorm多个不定查询字段查询;通过分别赋予tx.Where不定参数

https://cloud.tencent.com/developer/article/1374623
举例 不定(可能并没有参与sql查询的)查询条件 :
审核人(reviewer)、工单状态(status)、工单类型(type)、业务编号(objid)、创建人(creator)多个条件搜索

tx := dal.DBConnect.AdStyleRDS // 不要直接修改dal.DBConnect.AdStyleRDS, 因为我们只是用这一次,拷贝一个tx出来再修改就行
if req.Reviewer != nil {
   tx = tx.Where("reviewer = ?", *req.Reviewer)
}
if req.Creator != nil {
   tx = tx.Where("creator = ?", *req.Creator)
}
if req.Type != nil {
   tx = tx.Where("type = ?", *req.Type)
}
if req.ObjId != nil {
   tx = tx.Where("obj_id = ?", *req.ObjId)
}
if req.Status != nil {
   tx = tx.Where("status = ?", *req.Status)
}
order要在Find前才能实现排序
Order("id DESC").Find(&tickets).Error

gorm分页查询

tx := dal.DBConnect.AdStyleRDS // 不要直接修改dal.DBConnect.AdStyleRDS, 因为我们只是用这一次,拷贝一个tx出来再修改就行

var total int64
tx.Model(&model.TicketDDL{}).Count(&total) // 要在分页前计算记录总数 否则计算的是一页的数量

if page > 0 && size > 0 {    // page是页号
   tx = tx.Limit(int(size)).Offset(int((page - 1) * size))
}

pageNum := total / size    // pageNum是总页数
if total%size != 0 {
   pageNum++
}
// 如果前端传了页号 返回页号;如果前端没传页号说明想要全部记录,那么返回总页数
if req.Page != nil && req.Size != nil { // 如果前端传了指定要某页数据 返回页号
   PageDict["page"] = page
} else {
   PageDict["page"] = pageNum // 返回总页数
}
PageDict["size"] = size
PageDict["total"] = total

你可能感兴趣的:(GO,笔记,go)