|
|
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
|
|
|
}
|