package DbUtil import ( "dsData/Utils/ConfigUtil" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/xormplus/core" "github.com/xormplus/xorm" "os" "time" ) var Engine *xorm.EngineGroup func init() { host := ConfigUtil.MysqlIp port := ConfigUtil.MysqlPort user := ConfigUtil.MysqlUser dbname := ConfigUtil.MysqlDataBase password := ConfigUtil.MysqlPwd var conns []string //mysql master := fmt.Sprintf("%s:%s@%s(%s:%s)/%s?charset=utf8", user, password, "tcp", host, port, dbname) conns = append(conns, master) var err error Engine, err = xorm.NewEngineGroup("mysql", conns) if err != nil { fmt.Println(err) } //设置数据库连接池 Engine.SetMaxIdleConns(200) //设置连接池中的保持连接的最大连接数。 Engine.SetMaxOpenConns(200) //设置打开数据库的最大连接数,包含正在使用的连接和连接池的连接。 Engine.SetConnMaxLifetime(time.Minute * 5) //设置数据时区 var location *time.Location location, _ = time.LoadLocation("Asia/Shanghai") Engine.TZLocation = location //与 struct的映射方式,这里采用蛇型方法,默认是蛇形 Engine.SetTableMapper(core.SnakeMapper{}) //显示+记录SQL日志 f, _ := os.Create("./Logs/sql.log") Engine.SetLogger(xorm.NewSimpleLogger(f)) Engine.ShowSQL(true) // 则会在控制台打印出生成的SQL语句 Engine.Logger().SetLevel(core.LOG_DEBUG) //则会在控制台打印info及以上的信息 } /** 功能:对于简单表提供分页的通用SQL组装方法,返回通用分页的SQL语句和获取查询总数的SQL语句 作者:黄海 时间:2020-02-21 */ func GetCountSql(baseSql string) string { //替换掉分页代码,获取数据量总数 countSql := fmt.Sprintf("select count(1) as count from (%s) as t1", baseSql) return countSql } func GetPageSql(baseSql string, PkField string) string { //条件查询语句 conditionSql := fmt.Sprintf("%s %s %s", " order by ", PkField, " limit ? offset ? ") //分页的语句 pageSql := fmt.Sprintf("%s %s", baseSql, conditionSql) return pageSql }