定义结构体
设置主键、自增、和独立索引
联合索引用addindex
type User struct {
//通过在字段后面的标签说明,定义golang字段和表字段的关系
//例如 `gorm:"column:username"` 标签说明含义是: Mysql表的列名(字段名)为username
//这里golang定义的Username变量和MYSQL表字段username一样,他们的名字可以不一样。
Id int64 `gorm:"column:username;not null;type:int(4) primary key auto_increment;comment:'用户名'"`
Password string `gorm:"column:password;type:varchar(30);index:idx_name"`
//创建时间,时间戳
CreateTime int64 `gorm:"column:createtime"`
}
定义变化的表名
全局变量
var TablePre = "2021"
实现interface
func (u *User) TableName() string{
return "userss"+table
}
执行sql
dbSlaveClient, err := gorm.GetClient(xxxx)
if err != nil {
fmt.Println(err)
}
TablePre = "20210"
err = dbSlaveClient.Model(&User{}).Debug().
AutoMigrate(&User{}).
AddIndex("idx_cr_pass","createtime","password").Error
判断是否有无
if !dbSlaveClient.HasTable(&User{}) {
dbSlaveClient.AutoMigrate(&User{})
if dbSlaveClient.HasTable(&User{}) {
fmt.Println("balance表创建成功")
} else {
fmt.Println("balance表创建失败")
}
} else {
fmt.Println("表已存在")
}