优化 or 语句 + 支持 between / not between
This commit is contained in:
69
base.go
69
base.go
@ -199,7 +199,72 @@ func (b *BaseDao) setTxCondition(tx *gorm.DB, optionFuncList ...SetOption) *gorm
|
||||
tx = tx.Offset(o.Offset)
|
||||
}
|
||||
}
|
||||
sqlBlockList := make([]string, 0)
|
||||
// in 语句
|
||||
if nil != o.In {
|
||||
tx = tx.Where(o.In)
|
||||
}
|
||||
|
||||
// not in 语句
|
||||
if nil != o.NotIn {
|
||||
for field, value := range o.NotIn {
|
||||
tx = tx.Where(field+" NOT IN ? ", value)
|
||||
}
|
||||
}
|
||||
|
||||
// like 语句
|
||||
if nil != o.Like {
|
||||
for field, value := range o.Like {
|
||||
tx = tx.Where(field+" LIKE ? ", "%"+value+"%")
|
||||
}
|
||||
}
|
||||
|
||||
// NOT LIKE 语句
|
||||
if nil != o.NotLike {
|
||||
for field, value := range o.NotLike {
|
||||
tx = tx.Where(field+" NOT LIKE ? ", "%"+value+"%")
|
||||
}
|
||||
}
|
||||
|
||||
// >=
|
||||
if nil != o.Start {
|
||||
for field, value := range o.Start {
|
||||
tx = tx.Where(field+" >= ?", value)
|
||||
}
|
||||
}
|
||||
|
||||
// <
|
||||
if nil != o.End {
|
||||
for field, value := range o.End {
|
||||
tx = tx.Where(field+" < ?", value)
|
||||
}
|
||||
}
|
||||
|
||||
// between
|
||||
for field, betweenVal := range o.Between {
|
||||
tx = tx.Where("`"+field+"` BETWEEN ? AND ?", betweenVal[0], betweenVal[1])
|
||||
}
|
||||
// not between
|
||||
for field, notBetweenVal := range o.NotBetween {
|
||||
tx = tx.Where("`"+field+"` NOT BETWEEN ? AND ?", notBetweenVal[0], notBetweenVal[1])
|
||||
}
|
||||
|
||||
// 排序
|
||||
for _, orderRule := range o.Order {
|
||||
tx = tx.Order(orderRule)
|
||||
}
|
||||
|
||||
// or 语句
|
||||
if nil != o.OR {
|
||||
for _, itemOr := range o.OR {
|
||||
orOption := &Option{}
|
||||
for _, fn := range itemOr {
|
||||
fn(orOption)
|
||||
}
|
||||
orSql, orBindVal := optionToSql(orOption)
|
||||
tx.Or(orSql, orBindVal)
|
||||
}
|
||||
}
|
||||
/*sqlBlockList := make([]string, 0)
|
||||
bindValueList := make([]any, 0)
|
||||
sql, bindVal := optionToSql(o)
|
||||
tx.Or(sql, bindVal...)
|
||||
@ -212,6 +277,6 @@ func (b *BaseDao) setTxCondition(tx *gorm.DB, optionFuncList ...SetOption) *gorm
|
||||
}
|
||||
orSql, orBindVal := optionToSql(orOption)
|
||||
tx.Or(orSql, orBindVal...)
|
||||
}
|
||||
}*/
|
||||
return tx
|
||||
}
|
||||
|
Reference in New Issue
Block a user