50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package datasource
|
|
|
|
import (
|
|
"database/sql"
|
|
"regexp"
|
|
|
|
"ems.agt/lib/dborm"
|
|
"xorm.io/xorm"
|
|
)
|
|
|
|
// 获取默认数据源
|
|
func DefaultDB() *xorm.Engine {
|
|
return dborm.DbClient.XEngine
|
|
}
|
|
|
|
// RawDB 原生查询语句
|
|
func RawDB(source string, sql string, parameters []any) ([]map[string]any, error) {
|
|
// 数据源
|
|
db := DefaultDB()
|
|
|
|
// 使用正则表达式替换连续的空白字符为单个空格
|
|
fmtSql := regexp.MustCompile(`\s+`).ReplaceAllString(sql, " ")
|
|
|
|
// log.Infof("sql=> %v", fmtSql)
|
|
// log.Infof("parameters=> %v", parameters)
|
|
|
|
// 查询结果
|
|
var rows []map[string]any
|
|
err := db.SQL(fmtSql, parameters...).Find(&rows)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return rows, nil
|
|
}
|
|
|
|
// ExecDB 原生执行语句
|
|
func ExecDB(source string, sql string, parameters []any) (sql.Result, error) {
|
|
// 数据源
|
|
db := DefaultDB()
|
|
|
|
// 使用正则表达式替换连续的空白字符为单个空格
|
|
fmtSql := regexp.MustCompile(`\s+`).ReplaceAllString(sql, " ")
|
|
// 执行结果
|
|
res, err := db.Exec(append([]any{fmtSql}, parameters...)...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return res, err
|
|
}
|