Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseWhere ¶
func ParseWhere(dbType DBType, params []WhereParam) (where string, values []any)
ParseWhere 将 params 中的查询参数,转换为适用 gorm 的 where 条件
参数 - dbType:数据库类型:oracle、mssql、sqlserver、mysql - params:查询参数 WhereParam 返回值 - where:带 ? 占位符的字符串,可用于 gorm.DB.Where(where, values...)
Example ¶
package main import ( "fmt" "gorm.io/driver/sqlserver" "gorm.io/gorm" "gorm.io/gorm/logger" "log" "os" "time" ) var ( newLogger = logger.New( log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer logger.Config{ SlowThreshold: time.Second * 10, // 慢 SQL 阈值 LogLevel: logger.Error, // Log level Colorful: true, // 彩色打印 }, ) conf = &gorm.Config{ Logger: newLogger, PrepareStmt: true, // 执行任何 SQL 时都创建并缓存预编译语句,可以提高后续的调用速度 } db, _ = gorm.Open(sqlserver.Open(fmt.Sprintf("sqlserver://%v:%v@%v:%v?database=%v", "PT", "agft7g", "192.168.20.105", "1433", "PT")), conf) ) func main() { f, p := ParseWhere(Mssql, []WhereParam{ { Field: "user_id", Type: String, Value: "asdf|>adsg|5?86*", }, { Field: "age", Type: Number, Value: "!=", }, { Field: "score", Type: Number, Value: "50:200|>300", }, { Field: "birthday", Type: Date, Value: "2022-09-08 18:25:36.8546:2023-09-08 18:25:36", }, }) var a struct{} fmt.Println(db.ToSQL(func(tx *gorm.DB) *gorm.DB { return tx.Table(`aaa`).Where(f, p...).Find(&a) })) }
Output: 123
Types ¶
Click to show internal directories.
Click to hide internal directories.