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.