first commit

This commit is contained in:
何昌清
2026-03-26 22:13:03 +08:00
parent bbe1faa363
commit a2685f7f1e
51 changed files with 11244 additions and 0 deletions

48
utils/mysql_util.go Normal file
View File

@@ -0,0 +1,48 @@
package utils
import (
"Quincy_admin/config"
"fmt"
"log"
"sync"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql" // MySQL驱动
"github.com/jmoiron/sqlx"
)
var db *sqlx.DB // 全局数据库连接实例使用sqlx.DB替代sql.DB
var once sync.Once // 确保初始化只执行一次
// InitDB 初始化数据库连接
func InitDB(cfg *config.Config) (*sqlx.DB, error) {
var err error
once.Do(func() {
// 构建数据库连接字符串 - 添加时区参数
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true&loc=Asia%%2FShanghai",
cfg.DB.User, cfg.DB.Password, cfg.DB.Host, cfg.DB.Port, cfg.DB.Name)
// 使用sqlx.Open替代sql.Open
db, err = sqlx.Open("mysql", dsn)
if err != nil {
log.Fatalf("Error opening database: %v", err)
}
// 测试数据库连接
err = db.Ping()
if err != nil {
log.Fatalf("Error connecting to database: %v", err)
}
// 设置连接池参数
db.SetMaxOpenConns(20) // 最大打开连接数
db.SetMaxIdleConns(10) // 最大空闲连接数
})
return db, err
}
// GetDB 从上下文中获取数据库连接
func GetDB(c *gin.Context) *sqlx.DB {
return db
}