package datasource import ( "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, " ") // logger.Infof("sql=> %v", fmtSql) // logger.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) (int64, error) { // 数据源 db := DefaultDB() // 使用正则表达式替换连续的空白字符为单个空格 fmtSql := regexp.MustCompile(`\s+`).ReplaceAllString(sql, " ") // 执行结果 res, err := db.Exec(fmtSql, parameters) if err != nil { return 0, err } affected, err := res.RowsAffected() return affected, err }