模型定义
参考文档:https://gorm.io/zh_CN/docs/models.html
模型一般都是普通的 Golang 的结构体,Go的基本数据类型,或者指针。
模型是标准的struct,由Go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成(创建一个结构体可以将其变为一张表)
定义一张表:
常识:小写属性是不会生成字段的
ID这里其实就是一个主键,主键就是可以自增并且不能重复。
CreatedAt *time.Time `json:"createdAt" gorm:"column:create_at"` 你在创建的时候不需要传这个字段,你创建的时间会帮你自动加进去。在表里面创建的字段名叫create_at。
建议在mysql里面将表创建好和设计好,然后再回过头来做gorm的操作。这些直接在数据库底层搞好就行了,不建议和上面一样写的乱七八糟。
自动生成表结构
AutoMigrate传的是指针对象。
AutoMigrate的逻辑是只新增,不删除,不修改(大小会修改)例如将Name修改为Name1,进行迁移,会多出一个name1的字段
生成表结构如下:
修改大小
我们可以使用gorm的标签进行修改,有两种方式
type User1 struct {
Id int64 `gorm:"primary_key",gorm:"size:10"`
Username string `gorm:"size:10"`
Password string `gorm:"size:10"`
}
db.Debug().AutoMigrate(&User1{})
2023/07/25 15:49:14 C:/Users/W10/GolandProjects/day1/gorm/create.go:25
[44.529ms] [rows:0] ALTER TABLE `user1` MODIFY COLUMN `username` varchar(10)
2023/07/25 15:49:14 C:/Users/W10/GolandProjects/day1/gorm/create.go:25
[41.411ms] [rows:0] ALTER TABLE `user1` MODIFY COLUMN `password` varchar(10)
字段标签
标签是声明模型时可选的标记
type User1 struct {
Id int64 `gorm:"primary_key;size:2"`
Username string `gorm:"size:10"`
Password string `gorm:"column:passwd;size:10"`
}
2023/07/25 16:02:43 C:/Users/W10/GolandProjects/day1/gorm/create.go:25
[21.548ms] [rows:0] ALTER TABLE `user1` ADD `passwd` varchar(10)