IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> gorm 2.0升级笔记 -> 正文阅读

[大数据]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下面,一般情况下问题也不大。就是注意关联表格的建表顺序吧。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:10:38  更:2022-01-03 16:10:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:54:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码