使用 GORM(Go 的 ORM 库)连接数据库,并实现增删改查操作 | 青训营

49 阅读3分钟

一.什么是ORM?

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。

二.操作步骤

1.安装

在终端运行如下命令,自动下载并安装GORM和MySQL:

go get -u gorm.io/gorm

go get -u gorm.io/driver/mysql

2.连接数据库

以MySQL为例:

//连接数据库
dsn := "root:password@tcp(localhost)/sql_test?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
//错误判断
if err != nil {
	panic(err)
}
//创建一个表,表名叫UserTest,进入数据库中后名字为user_tests
db.AutoMigrate(&UserTest{})

}

其中,root:用户名;password:密码; localhost:mysql默认本地地址

上述三个变量需自行定义、替换

3.定义模型和迁移

定义一个结构体,并在结构体上添加GORM的标签,表明字段与数据库表的映射关系。

	gorm.Model
	Name     string
	Birthday time.Time
}

func main() {
	//连接数据库
	dsn := "root:password@tcp(localhost)/sql_test?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
        
	//错误判断
	if err != nil {
		panic(err)
	}
        
	//创建一个表表名叫UserTest,进入数据库中后名字为user_tests,即数据迁移
	db.AutoMigrate(&UserTest{})
        

4.增删改查操作

func main() {
	// ...
        
	// 插入数据
        //使用CreateTable方法进行处理,其参数可以是结构体变量的地址形式,也可以是结构体的地址形式。
        user := UserTest{Name: "pww", Birthday: time.Now()}
	result := db.Create(&user)
	if result.Error != nil {
		panic("插入数据失败")
	}

	// 查询数据
	var queryUser User
	db.First(&queryUser, user.Birthday)

	// 更新数据
	db.Model(&queryUser).Update("Name", Tom)

	// 删除数据
	db.Delete(&queryUser)

	// ...

在上述代码中,db.Create用于插入一条新的数据;db.First方法用于查询数据;使用db.Model和db.Update更新数据;使用db.Delete删除数据。

GORM还有其他方法实现增删改查,如:使用map创建、使用where查询、使用select选择查询等,此处没有展开。

三.总结

通过本次实践操作,我了解了GORM和数据库的相关知识,熟悉了GORM的增删改查操作,为之后进一步编写代码打下了一定的基础。GORM功能强大,希望之后能够更加熟练的运用,达到得心应手的境界。