golang-gorm自动建表

  • Post author:
  • Post category:golang




定义结构体

设置主键、自增、和独立索引

联合索引用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("表已存在")
  }



版权声明:本文为qq_39787367原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。