diff --git a/gplus/query.go b/gplus/query.go index bf19ec9..6066f6a 100644 --- a/gplus/query.go +++ b/gplus/query.go @@ -745,8 +745,8 @@ func (q *QueryCond[T]) buildOrder(orderType string, columns ...string) { } } -// 执行执行增加条件 -func (q *QueryCond[T]) AddStrCond(cond string) *QueryCond[T] { +// 执行增加AND条件 +func (q *QueryCond[T]) AddAndStrCond(cond string) *QueryCond[T] { if len(q.queryExpressions) > 0 { sk := sqlKeyword{keyword: constants.And} q.queryExpressions = append(q.queryExpressions, &sk) @@ -757,6 +757,18 @@ func (q *QueryCond[T]) AddStrCond(cond string) *QueryCond[T] { return q } +// 执行增加OR条件 +func (q *QueryCond[T]) AddOrStrCond(cond string) *QueryCond[T] { + if len(q.queryExpressions) > 0 { + sk := sqlKeyword{keyword: constants.Or} + q.queryExpressions = append(q.queryExpressions, &sk) + } + condSk := sqlKeyword{keyword: cond} + q.queryExpressions = append(q.queryExpressions, &condSk) + q.last = &condSk + return q +} + // 根据条件,执行方法 func (q *QueryCond[T]) Case(isTrue bool, handleFunc func()) *QueryCond[T] { if isTrue { diff --git a/tests/dao_test.go b/tests/dao_test.go index e448640..f21419a 100644 --- a/tests/dao_test.go +++ b/tests/dao_test.go @@ -34,6 +34,7 @@ var gormDb *gorm.DB func init() { dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local" + var err error gormDb, err = gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), @@ -660,7 +661,7 @@ func TestQueryBuilder(t *testing.T) { query, _ := gplus.NewQuery[User]() - query.AddStrCond(fmt.Sprintf(" username = '%s' ", "afumu1")) + query.AddAndStrCond(fmt.Sprintf(" username = '%s' ", "afumu1")) count, db := gplus.SelectCount(query) if db.Error != nil { @@ -678,7 +679,7 @@ func TestExist(t *testing.T) { query, _ := gplus.NewQuery[User]() - query.AddStrCond(fmt.Sprintf(" username = '%s' ", "afumu1")) + query.AddAndStrCond(fmt.Sprintf(" username = '%s' ", "afumu1")) exist, dbErr := gplus.Exists(query) if dbErr != nil {