使用GORM实现增删改查 | 青训营X豆包MarsCode 技术训练营

66 阅读3分钟

GORM基础探索与入门实践

作为一个初学者,初次接触GORM,首先要明确它是一个Go语言的ORM(Object Relational Mapping)框架,用于简化数据库操作。通过GORM,可以使用Go语言以面向对象的方式操作数据库表,摆脱复杂的SQL语句,提升开发效率。起初以为是和 Mybatis 差不多的 ORM 框架,实际体验下来大有不同

GORM的基础功能和特点

GORM的核心优势包括:

  1. 简化数据库操作:通过结构体和方法绑定,实现对表的增删改查操作。
  2. 自动迁移:支持根据代码结构体生成数据库表的功能。
  3. 强大的链式调用:大大提升了代码可读性。
  4. 开箱即用:提供了丰富的功能如预加载、事务管理等。

对于小白来说,它最大的吸引力在于将SQL操作转换为Go代码,降低了学习和使用门槛。

通过代码理解GORM入门

我通过一个简单的RESTful API示例来探索GORM的基本功能。下面这段代码展示了如何利用GORM实现用户的增删改查功能。

数据库配置与连接

// config
url := "127.0.0.1"
port := "3306"
username := "root"
password := "password"
dbname := "go_test"
dsn := username + ":" + password + "@tcp(" + url + ":" + port + ")/" + dbname + "?charset=utf8mb4&parseTime=True&loc=Local"
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
	log.Fatal("数据库连接失败:", err)
}
db.AutoMigrate(&User{})
  • gorm.Open 是GORM的入口,用于连接数据库。dsn里配置了数据库的地址、用户名、密码等信息。
  • db.AutoMigrate(&User{}) 会根据代码中的User结构体生成对应的数据库表。这种自动迁移功能非常适合快速开发。

实现RESTful API功能

以下代码展示了如何使用GORM完成增删改查操作:

  1. 新增用户
if err := db.Create(&user).Error; err != nil {
	c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create user"})
	return
}

这段代码通过db.Create()方法将用户信息插入数据库,GORM会自动生成SQL语句,免去了手动拼接SQL的繁琐。

  1. 查询所有用户
db.Find(&users)

Find方法直接将查询结果填充到users变量中,非常简洁。

  1. 按ID查询用户
if err := db.First(&user, id).Error; err != nil {
	c.JSON(http.StatusNotFound, gin.H{"error": "用户未找到"})
	return
}

First方法用于查询单条记录,若记录不存在,会返回错误。

  1. 更新用户
db.Model(&user).Updates(input)

通过Updates方法,可以用结构体更新用户的多项字段。

  1. 删除用户
db.Delete(&user)

Delete方法可直接删除对应记录,无需再写SQL。

使用Apifox测试

  • 运行成功后会有相关提示,并展示出相关api及对应的方法 image.png
  • 测试下GET请求

image.png

  • 查询所有用户

image.png

  • 根据id查询用户

image.png

image.png

  • 创建用户

image.png

再次查询下,确实是多了一个

image.png

  • 删除用户

image.png

我的初步感悟

初次接触GORM,让我感受最深的是它对数据库操作的抽象能力。不需要再去理解复杂的SQL语法,只需用熟悉的Go代码完成任务。同时,与我之前接触过的MyBatis相比,GORM的上手更加容易,尤其是自动迁移功能,为开发带来了极大的便利。

总结

通过这次探索,我了解了GORM的基础功能,并通过简单代码实现了数据库的增删改查。作为一个Go语言小白,我觉得GORM不仅是一个开发工具,更是一个提升开发效率的利器