diff --git a/base.go b/base.go index f12bd75..1c50bf1 100644 --- a/base.go +++ b/base.go @@ -27,7 +27,7 @@ func (b *BaseDao) Create(dbInstance *gorm.DB, table string, data interface{}) er // // Date : 8:12 下午 2021/8/8 func (b *BaseDao) Update(dbInstance *gorm.DB, table string, updateDate interface{}, optionFuncList ...SetOption) (int64, error) { - b.setTxCondition(dbInstance, table, optionFuncList...) + dbInstance = b.setTxCondition(dbInstance, table, optionFuncList...) r := dbInstance.Updates(updateDate) return r.RowsAffected, r.Error } @@ -38,7 +38,7 @@ func (b *BaseDao) Update(dbInstance *gorm.DB, table string, updateDate interface // // Date : 8:14 下午 2021/8/8 func (b *BaseDao) List(dbInstance *gorm.DB, table string, result interface{}, optionFuncList ...SetOption) error { - b.setTxCondition(dbInstance, table, optionFuncList...) + dbInstance = b.setTxCondition(dbInstance, table, optionFuncList...) return dbInstance.Find(result).Error } @@ -48,7 +48,7 @@ func (b *BaseDao) List(dbInstance *gorm.DB, table string, result interface{}, op // // Date : 8:25 下午 2021/8/8 func (b *BaseDao) Detail(dbInstance *gorm.DB, table string, result interface{}, optionFuncList ...SetOption) error { - b.setTxCondition(dbInstance, table, optionFuncList...) + dbInstance = b.setTxCondition(dbInstance, table, optionFuncList...) return dbInstance.First(result).Error } @@ -58,7 +58,7 @@ func (b *BaseDao) Detail(dbInstance *gorm.DB, table string, result interface{}, // // Date : 8:25 下午 2021/8/8 func (b *BaseDao) Count(dbInstance *gorm.DB, table string, optionFuncList ...SetOption) (int64, error) { - b.setTxCondition(dbInstance, table, optionFuncList...) + dbInstance = b.setTxCondition(dbInstance, table, optionFuncList...) var cnt int64 return cnt, dbInstance.Table(table).Count(&cnt).Error } @@ -95,9 +95,9 @@ func (b *BaseDao) Rollback(db *gorm.DB) error { // Author : go_developer@163.com<白茶清欢> // // Date : 17:38 2022/5/15 -func (b *BaseDao) setTxCondition(tx *gorm.DB, table string, optionFuncList ...SetOption) { +func (b *BaseDao) setTxCondition(tx *gorm.DB, table string, optionFuncList ...SetOption) *gorm.DB { // 指定查询的表 - tx.Table(table) + tx = tx.Table(table) // 构建查询条件 o := &Option{} @@ -107,54 +107,55 @@ func (b *BaseDao) setTxCondition(tx *gorm.DB, table string, optionFuncList ...Se // 设置where条件 if nil != o.Where && len(o.Where) > 0 { - tx.Where(o.Where) + tx = tx.Where(o.Where) } // 设置 limit offset if o.Limit > 0 { - tx.Limit(o.Limit) + tx = tx.Limit(o.Limit) } if o.Offset >= 0 { - tx.Offset(o.Offset) + tx = tx.Offset(o.Offset) } // in 语句 if nil != o.In { - tx.Where(o.In) + tx = tx.Where(o.In) } // not in 语句 if nil != o.NotIn { for field, value := range o.NotIn { - tx.Where(field+" NOT IN ? ", value) + tx = tx.Where(field+" NOT IN ? ", value) } } // like 语句 if nil != o.Like { for field, value := range o.Like { - tx.Where(field+" LIKE ? ", "%"+value+"%") + tx = tx.Where(field+" LIKE ? ", "%"+value+"%") } } // NOT LIKE 语句 if nil != o.NotLike { for field, value := range o.NotLike { - tx.Where(field+" NOT LIKE ? ", "%"+value+"%") + tx = tx.Where(field+" NOT LIKE ? ", "%"+value+"%") } } // >= if nil != o.Start { for field, value := range o.Start { - tx.Where(field+" >= ?", value) + tx = tx.Where(field+" >= ?", value) } } // < if nil != o.End { for field, value := range o.End { - tx.Where(field+" < ?", value) + tx = tx.Where(field+" < ?", value) } } + return tx }