@@ -26,6 +26,7 @@ import (
2626
2727type QueryCond [T any ] struct {
2828 selectColumns []string
29+ omitColumns []string
2930 distinctColumns []string
3031 queryExpressions []any
3132 orderBuilder strings.Builder
@@ -37,6 +38,7 @@ type QueryCond[T any] struct {
3738 limit * int
3839 offset int
3940 updateMap map [string ]any
41+ columnTypeMap map [string ]reflect.Type
4042}
4143
4244func (q * QueryCond [T ]) getSqlSegment () string {
@@ -46,7 +48,6 @@ func (q *QueryCond[T]) getSqlSegment() string {
4648// NewQuery 构建查询条件
4749func NewQuery [T any ]() (* QueryCond [T ], * T ) {
4850 q := & QueryCond [T ]{}
49-
5051 modelTypeStr := reflect .TypeOf ((* T )(nil )).Elem ().String ()
5152 if model , ok := modelInstanceCache .Load (modelTypeStr ); ok {
5253 m , isReal := model .(* T )
@@ -150,13 +151,27 @@ func (q *QueryCond[T]) LikeLeft(column any, val any) *QueryCond[T] {
150151 return q
151152}
152153
154+ // NotLikeLeft 非左模糊 NOT LIKE '%值'
155+ func (q * QueryCond [T ]) NotLikeLeft (column any , val any ) * QueryCond [T ] {
156+ s := fmt .Sprintf ("%v" , val )
157+ q .addExpression (q .buildSqlSegment (column , constants .Not + " " + constants .Like , "%" + s )... )
158+ return q
159+ }
160+
153161// LikeRight 右模糊 LIKE '值%'
154162func (q * QueryCond [T ]) LikeRight (column any , val any ) * QueryCond [T ] {
155163 s := fmt .Sprintf ("%v" , val )
156164 q .addExpression (q .buildSqlSegment (column , constants .Like , s + "%" )... )
157165 return q
158166}
159167
168+ // NotLikeRight 非右模糊 NOT LIKE '值%'
169+ func (q * QueryCond [T ]) NotLikeRight (column any , val any ) * QueryCond [T ] {
170+ s := fmt .Sprintf ("%v" , val )
171+ q .addExpression (q .buildSqlSegment (column , constants .Not + " " + constants .Like , s + "%" )... )
172+ return q
173+ }
174+
160175// IsNull 是否为空 字段 IS NULL
161176func (q * QueryCond [T ]) IsNull (column any ) * QueryCond [T ] {
162177 q .addExpression (q .buildSqlSegment (column , constants .IsNull , "" )... )
@@ -284,6 +299,15 @@ func (q *QueryCond[T]) Select(columns ...any) *QueryCond[T] {
284299 return q
285300}
286301
302+ // Omit 忽略字段
303+ func (q * QueryCond [T ]) Omit (columns ... any ) * QueryCond [T ] {
304+ for _ , v := range columns {
305+ columnName := getColumnName (v )
306+ q .omitColumns = append (q .omitColumns , columnName )
307+ }
308+ return q
309+ }
310+
287311// Set 设置更新的字段
288312func (q * QueryCond [T ]) Set (column any , val any ) * QueryCond [T ] {
289313 columnName := getColumnName (column )
0 commit comments