gorm PageDbRequest查询条件通用扩展,简化https://gitee.com/gowebframe3/webframe.git
https://gitee.com/gowebframe3/webframe.git type PageDbRequest struct { *page.PageRequest //表名 TableName string json:tableName //Pkey PkeyField string json:pkeyField SubTable *jointable.SubTableDto json:- models any tabler schema.Tabler ichubConfig *ichubconfig.IchubConfig metadataFactroy *service.MetadataFactroy }type PageRequest struct { basedto.BaseEntity json:- PageGroupAgg *jointable.JoinTables //通用db条件 dbWhere []jointable.Query json:where //查询字段条件 Fields []*dto.QueryField json:fieldsfunc (self *PageRequest) DbWhere(Query string, args ...any) *PageRequest { if self.dbWhere nil { self.dbWhere []jointable.Query{} } self.dbWhere append(self.dbWhere, jointable.Query{Query: Query, Param: args}) return self} func (self *PageRequest) IfDbWhere() bool { return self.dbWhere ! nil len(self.dbWhere) 0 } 测试func (self *TestDbSuite) Test471_FindBeanUsersDaoQueryModelDbWhere() { var dao dbentity.FindBeanUsersDao() dao.DbWhere(user_type ? or user_type ? and id0 , 20, 21) dao.PageSize 3 var ret dao.QueryModel() golog.Info(ret) }2026-06-04 23:08:47.241 [INFO] sql E:/soft/gitee.com/webframe/goweb/page/page_request.go:461 22.4839ms SELECT count(*) FROM users WHERE users.deleted_at IS NULL AND ((user_type $1 or user_type $2 and id0 )) LIMIT 1 OFFSET 0 [20,21] 02026-06-04 23:08:47.262 [INFO] sql E:/soft/gitee.com/webframe/goweb/page/page_request.go:482 20.1922ms SELECT * FROM users WHERE users.deleted_at IS NULL AND ((user_type $1 or user_type $2 and id0 )) LIMIT 3 OFFSET 0 [20,21] 3func (self *BaseDao[P, E]) QueryModel(pageSize ...int) *pagemodel.PageResult[E] { if len(pageSize) 0 { self.SetPageSize(pageSize[0]) } var pageret self.Query(pageSize...) var ret pagemodel.DefaultResult[E]().FromPageResult(pageret) ret.RetFields self.FieldsName if ret.ExistRecord() { if lo.IsNotNil(self.FillRows) { self.FillRows.Fills(ret) } if lo.IsNotNil(self.FillRow) { for i : range ret.Data { self.FillRow.Fill(ret.Data[i]) } } } return ret }func (self *PageRequest) BuildWhere(dbc *gorm.DB) *gorm.DB { self.InitPage() dbc self.buildDbWhere(dbc) dbc self.BuildWhereLikeKeyword(dbc) dbc self.BuildOrFieldsAll(dbc) if self.Fields nil { return dbc } for _, field : range self.Fields { self.TransOpType(field) if field.IfExistExpr() { dbc self.BuildWhereFieldSqlExpr(dbc, field) } else { dbc self.BuildWhereField(dbc, field) } } return dbc }func (self *PageRequest) buildDbWhere(dbc *gorm.DB) *gorm.DB { if self.IfDbWhere() { for i : 0; i len(self.dbWhere); i { dbc dbc.Where(self.dbWhere[i].Query, self.dbWhere[i].Param...) } } return dbc }