package datasource import ( "database/sql" "regexp" "be.ems/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 }