升级gorm v2
记录 go 项目升级到 gorm v2 的一些修改。
gorm v2 项目地址,Release Note。
go中引入是import "gorm.io/gorm"
连接数据库
db, err := gorm.Open("mysql", connString)
改成db, err := gorm.Open(mysql.Open(connString), &gorm.Config{})
原来的db.LogMode(true)
改成db.Logger = logger.Default.LogMode(logger.Info)
维护连接池
1 | //v1: |
模型定义
在 v1 中我使用了一些 sql 的 tag,如sql:"not null"
,在 v2 里要改成gorm:"not null"
,用于指定外键的 tag 也变更了(Associations)。
数据迁移
这算是最大的变动了。
v1 我使用了AutoMigrate
建表之后手动DB.Model(&Table{}).AddForeignKey
添加外键。
v2 没有了AddForeignKey
方法,自动迁移的表结构可以是这样的:
1 | type Star struct { |
使用自动迁移,表中不可以有不是外键的关联。
手动设置外键约束见官方文档,还可以使用 Migrator 接口手动迁移。
Count
Count 仅支持 *int64
作为参数
1 | - total := 0 |
删除操作
1 | v1 |