gorm 2.0升级笔记
2022/1/3 6:15:26
本文主要是介绍gorm 2.0升级笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一般的就不记录了。
Go gorm是时候升级新版本了 2.0新特性介绍(1) |Go主题月_王中阳的博客-CSDN博客_go2.0
Go GORM是时候升级新版本了 2.0新特性介绍(2)_王中阳的博客-CSDN博客_gorm 升级
第二期Go开源说实录:GORM 剖析与最佳实践_Go中国-CSDN博客
gorm升级V1至V2_CarlosKeFeng的博客-CSDN博客_gorm v2
我用beego 2.0
1. 全局变量问题
原来是这样的
//定义全局的db对象,我们执行数据库操作主要通过他实现。 var _db *gorm.DB …… 看了网上的这样加一个getdb…… func GetDB() *gorm.DB { return _db } 然后到各个方法里先 db:=GetDB() result:=db.Create(……)
其实2.0直接用这个全局变量即可_db,但是,每个方法里,是否要另外赋值一个新的变量呢,比如:有人说不赋新的变量会影响_db这个全局变量。
db := _db projectuser := ProjectUser{ProjectId: pid, UserId: uid} result := db.Create(&projectuser) // 通过数据的指针来创建
2. 旧版连接数据库
_db, err = gorm.Open(db_type, dns)
2.0之后的连接数据库,放models下第一个文件的init里
_db, err = gorm.Open(sqlite.Open(dns), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ SingularTable: true, // 使用单数表名,启用该选项后,`User` 表将是`user` // NameReplacer: strings.NewReplacer("CID", "Cid"), // 在转为数据库名称之前,使用NameReplacer更改结构/字段名称。 // TablePrefix: "t_", // 表名前缀,`User`表为`t_users` }, }) if err != nil { panic("gorm failed to connect database") }
3.新建表格问题,以及最麻烦的表格之间有关联关系的话,谁先建立,谁后建立的问题
旧的用createtable,新的没有了,只有下面AutoMigrate又叫迁移,谁能想到它就是建表呢。网上有做什么映射之类的,我觉得太复杂了(主要是我看不懂)。
说到执行顺序,beego是先执行models里的init,然后执行controllers里的init,都是按文件名排序顺序执行。
下面这段代码,放在models里的第一个文件里的init方法里。 sqlDB, err := _db.DB() // SetMaxIdleConns 设置空闲连接池中连接的最大数量 sqlDB.SetMaxIdleConns(10) // SetMaxOpenConns 设置打开数据库连接的最大数量。 sqlDB.SetMaxOpenConns(100) // SetConnMaxLifetime 设置了连接可复用的最大时间。 sqlDB.SetConnMaxLifetime(24 * time.Hour) // 自动建表 _db.AutoMigrate(&Article{}, &Business{}, &BusinessUser{}, &NickName{}, &BusinessCheckin{}, &Location{}, &LocationNavigate{})
建表出错,主要是建表顺序的问题,因为以前写的建表都是放在各自的models下面,一般情况下问题也不大。就是注意关联表格的建表顺序吧。
这篇关于gorm 2.0升级笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。