Files
be.ems/lib/core/datasource/datasource.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
}