Your Question
因为在开发过程中,使用where需要以字符串的形式去拼接sql。不是很方便。我自己写了querybuild 用来在调用where 的时候使用。
package querybuild
import (
"fmt"
)
func NotIn(field string, list any) (string, any) {
return fmt.Sprintf(`%v not in ?`, field), list
}
func In(field string, list any) (string, any) {
return fmt.Sprintf(`%v in ?`, field), list
}
func Gt(field, value any) (string, any) {
return fmt.Sprintf(`%v > ?`, field), value
}
func Ge(field, value any) (string, any) {
return fmt.Sprintf(`%v >= ?`, field), value
}
func Lt(field, value any) (string, any) {
return fmt.Sprintf(`%v < ?`, field), value
}
func Le(field, value any) (string, any) {
return fmt.Sprintf(`%v <= ?`, field), value
}
func Eq(field, value any) (string, any) {
return fmt.Sprintf(`%v = ?`, field), value
}
func Like(field, value string) (string, string) {
return fmt.Sprintf(`%v = ?`, field), fmt.Sprintf(`%%%v%%`, value)
}
func LeftLike(field, value string) (string, string) {
return fmt.Sprintf(`%v = ?`, field), fmt.Sprintf(`%%%v`, value)
}
func RightLike(field, value string) (string, string) {
return fmt.Sprintf(`%v = ?`, field), fmt.Sprintf(`%v%%`, value)
}
func Ne(field, value any) (string, any) {
return fmt.Sprintf(`%v <> ?`, field), value
}
func IsNull(field string) string {
return fmt.Sprintf(`%v IS NULL`, field)
}
func IsNotNull(field string) string {
return fmt.Sprintf(`%v IS NOT NULL`, field)
}
因为这是额外包里写的,会导致会出现许多重复的代码。
希望 gorm 本身可以支持这种更丰富的查询构造器。
builder().Eq(xxx,xxx).In(xxx,xxx).NotNull(xxx,xxx).First(&entity)
Comment From: li-jin-gou
欢迎使用 gen @thh9 https://github.com/go-gorm/gen