You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}