| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package models
- import (
- "fmt"
- "time"
- "github.com/beego/beego/v2/server/web"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- "gorm.io/gorm/schema"
- )
- var DB *gorm.DB
- var err error
- func init() {
- mysqluser, _ := web.AppConfig.String("mysqluser")
- mysqlpass, _ := web.AppConfig.String("mysqlpass")
- mysqlurls, _ := web.AppConfig.String("mysqlurls")
- mysqldb, _ := web.AppConfig.String("mysqldb")
- httpport, _ := web.AppConfig.String("mysqlhttpport")
- dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=True&loc=Local",
- mysqluser, mysqlpass, mysqlurls, httpport, mysqldb)
- DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
- SkipDefaultTransaction: true, //禁用默认事务
- Logger: logger.Default.LogMode(logger.Info), //日志配置
- DisableForeignKeyConstraintWhenMigrating: true, //禁用外键约束
- NamingStrategy: schema.NamingStrategy{
- SingularTable: true,
- }, //表名单数
- })
- // 配置连接池
- if err == nil {
- sqlDB, err := DB.DB()
- if err == nil {
- // 设置最大打开连接数
- sqlDB.SetMaxOpenConns(100)
- // 设置最大空闲连接数
- sqlDB.SetMaxIdleConns(10)
- // 设置连接最大生存时间
- sqlDB.SetConnMaxLifetime(time.Hour)
- // 设置连接最大空闲时间
- sqlDB.SetConnMaxIdleTime(time.Minute * 30)
- }
- }
- if err != nil {
- fmt.Println("连接mysql数据库失败", err)
- } else {
- fmt.Println("连接mysql数据库成功")
- }
- DB.Callback().Create().Before("gorm:create").Register("set_create_time", setCreateTimeCallback)
- // 全局回调函数,在更新记录之前设置更新时间
- DB.Callback().Update().Before("gorm:update").Register("set_update_time", setUpdateTimeCallback)
- }
- // GetUnix 获取当前时间戳
- func GetUnix() int64 {
- return time.Now().Unix()
- }
- // 全局回调函数,在创建记录之前设置新增时间
- func setCreateTimeCallback(db *gorm.DB) {
- if _, ok := db.Statement.Schema.FieldsByName["CreatedAt"]; ok {
- now := int(GetUnix())
- db.Statement.SetColumn("CreatedAt", now)
- }
- }
- // 全局回调函数,在更新记录之前设置更新时间
- func setUpdateTimeCallback(db *gorm.DB) {
- if _, ok := db.Statement.Schema.FieldsByName["UpdateTime"]; ok {
- now := int(GetUnix())
- db.Statement.SetColumn("UpdateTime", now)
- }
- }
|