使用GORM进行数据库基本操作 | 青训营

69 阅读3分钟

这两天阅读了关于GORM进行操作数据库的文章和文档,感觉很有意思,因此这两天进行了实操,期间也踩了不少坑,因此在这里做一些整理,希望对未来自己的学习有所帮助。

众所周知,数据库中的一切操作都离不开数据库的连接和四种基本操作——增删查改,因此在本文中,主要介绍数据库的连接和这四种基本操作的实现。话不多说马上开始。

参考文章:Go组件学习——gorm四步带你搞定DB增删改查 - 掘金 (juejin.cn)

WorkBench安装教程_mysql workbench安装教程_索儿呀的博客-CSDN博客

因为自己电脑是新买的,所以要重新安装mysql和workbench,安装过程就不赘述,可以参考上面的参考文章,这里用workbench来进行数据库的可视化。

下载GORM库和应用

下载GORM库在命令行管理员模式输入下列代码:

go get -u github.com/jinzhu/gorm

安装后,在具体的项目中引入相关包。

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

建立数据库连接

dsn := "lxh:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) //连接数据库
	if err != nil {
		panic("fail to connnect database!")
	}

这里的dsn格式是连接数据库的地址,其中格式为"root:你的数据库密码@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local",用gorm的Open方法连接数据库,这里用的是Mysql数据库,从引入的包即可看出。通过上面的声明,我们便完成了数据库的连接。

建表

首先在workbench中输入以下mysql语句。

use `test`;
CREATE TABLE `test` (
  `id` bigint(20) NOT NULL,
  `name` varchar(5) DEFAULT NULL,
  `age` integer(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

这里是在一个test的schemas中新建了一个test表,下面的代码中要连接这个表是先从test这个schemas进入的,这点要注意。

这里建立一个test表,其中三个字段:id、name、age,其中id为主键。 成功后便建立了一张空表。如图所示。

微信图片_20230809204042.png

微信图片_20230809203742.png

接下来为空表添加数据。

//建表,赋予数据
db.Create(&Test{Id: 1, Name: "lxh", Age: 18})

为空表字段赋予了数据,结果如图。

微信图片_20230809204042.png

查询数据

db.First(&test, "name=?", "lxh")
	fmt.Println(test)

上面这段代码查询的是name字段值为"lxh"的所在行全部字段的值,并将其全部打印。结果如图。

微信图片_20230809204402.png

改数据

var test Test
// 改 - 将test的name更新为"zl"
db.Model(&test).Update("name", "zl")

这里将数据"lxh"更新为"zl" 更新多个字段有两种方法,一是用结构体加大括号的形式,另一种则用map映射,具体实现如下:

// Update 多个字段
	db.Model(&test).Updates(Test{Id: 11, Name: "scsc"})
	db.Model(&test).Updates(map[string]interface{}{"Id": 111, "Age": 16})

删表跑路(bushi)

// 删 - 删除test
	db.Delete(&test, 1)

最终表如图所示

微信图片_20230809205936.png

这是一种硬删除的方式,是一种最直接了当的删除方法,事实上还有一种软删除的方法,记录不会被真正删除,通过使用Unscoped可以查询到被软删的数据。具体实现方法参考文章基于GORM实现软删除用法_gorm 软删除_羡鱼°的博客-CSDN博客

总结

这篇文章中只介绍了用GORM进行最为基本的四种基本操作——增删查改,而事实上GORM还有很多别的用途,他在数据库操作上提供了很多便利,这里不多赘述,可以参考前文提到的参考文献进行进一步学习。