package mysql
import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "sync" "testing" "time" )
type v1Table struct { Id uint32 `gorm:"column:id;AUTO_INCREMENT"` Md5Id string `gorm:"column:Md5Id"` Title string `gorm:"column:title"` InsertTime time.Time `gorm:"column:InsertTime;autoCreateTime"` UpTime time.Time `gorm:"column:UpTime;autoUpdateTime"` } type v2Table struct { Id uint32 `gorm:"column:id;AUTO_INCREMENT"` Md5Id string `gorm:"column:Md5Id"` Title string `gorm:"column:Title"` InsertTime time.Time `gorm:"column:InsertTime;autoCreateTime"` UpTime time.Time `gorm:"column:UpTime;autoUpdateTime"` }
func (v1Table) TableName() string { return "v1Table" }
func (v2Table) TableName() string { return "v2Table" }
type config struct { user string pass string adrr string port string dbname string }
var ( db *gorm.DB dbOnce sync.Once )
func GetDB() *gorm.DB { if db == nil { dbOnce.Do(func() { initDB() }) } return db }
func initDB() { conf := &config{ user: "TestDBSql", pass: "msEs3IlksfJi", adrr: "127.0.0.1", port: "3306", dbname: "TestDBSql", }
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", conf.user, conf.pass, conf.adrr, conf.port, conf.dbname)
var err error db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), })
if err != nil { panic("failed to connect database: " + err.Error()) }
err = db.AutoMigrate( &VideoTable{}, &MhTable{}, ) if err != nil { panic("auto migrate failed: " + err.Error()) }
sqlDB, err := db.DB() if err != nil { panic("failed to get underlying sql.DB: " + err.Error()) }
sqlDB.SetMaxIdleConns(10) sqlDB.SetMaxOpenConns(100) sqlDB.SetConnMaxLifetime(30 * time.Minute) }
func TestClientDb(t *testing.T) { db := GetDB() var V1 v1Table db.Where("id = ?", 1).First(&video) ub := &V1{} err := db.Where("Title = ?", "测试").Find(&ub).Error if err != nil { panic(err) } fmt.Printf("userBase:%+v", ub) }
|