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

28 阅读3分钟

介绍

GORM 是一个 Go 语言编程的 ORM(对象关系映射) 库,用于将数据库操作抽象为面向对象的方式,允许开发者通过操作 Go 结构体来实现对数据库的增删改查。ORM 技术在简化数据库操作、提高开发效率以及维护代码的可读性方面发挥着重要作用。GORM 建立在强大的数据库操作库基础上,为开发者提供了一系列功能丰富的特性,以及一种更简洁的方式来处理与数据库的交互。

优点

  1. 简化数据库操作: GORM 提供了一个易于使用的 API,可以将数据库操作抽象为 Go 结构体的方法调用,这样开发者无需直接编写 SQL 语句,能够更加专注于业务逻辑。

  2. 支持多种数据库: GORM 支持多种关系型数据库,如 MySQL、PostgreSQL、SQLite 和 SQL Server 等。可以通过简单的配置来切换不同的数据库。

  3. 模型映射: GORM 允许将 Go 结构体映射到数据库中的表。只需定义一个 Go 结构体,GORM 将自动生成表结构和列映射。

  4. 查询构建: GORM 提供了丰富的查询构建器,允许以链式调用的方式构建复杂的查询条件。可以轻松地进行过滤、排序、分页等操作。

  5. 关联关系: GORM 支持在结构体之间建立关联关系,如一对一、一对多、多对多等关系。这能够更加方便地操作关联数据。

  6. 事务支持: GORM 提供了事务管理的功能,可以在多个数据库操作之间维护数据的一致性。

  7. 钩子函数: GORM 允许在数据库操作前后添加自定义的钩子函数,从而实现一些特定的业务逻辑。

  8. 迁移工具: GORM 提供了数据库迁移工具,能够根据结构体定义自动创建或更新数据库表结构,便于数据库的版本控制和升级。

  9. 活跃社区: GORM 具有大量的使用,在遇到一些普遍问题时,可以很快的找到解答。

使用

配置

db, err = gorm.Open(mysql.Open('DSN'))

DSN为MySQL链接地址

type User struct {
	ID   uint
	Name string
	Age  int
}

func main() {
	// 创建记录
	user := User{Name: "Alice", Age: 25}
	result := db.Create(&user)
	if result.Error != nil {
		panic("Failed to create user")
	}
	fmt.Println("User created successfully")
}

通过结构体直接加入到数据库中,gorm 可自动适配数据库格式

func main() {
	// 删除记录
	var user User
	result := db.Where("name = ?", "Alice").Delete(&user)
	if result.Error != nil {
		panic("Failed to delete user")
	}
	fmt.Println("User deleted successfully")
}

func main() {
	// 更新记录
	var user User
	result := db.Where("name = ?", "Alice").First(&user)
	if result.Error != nil {
		panic("User not found")
	}

	user.Age = 26
	result = db.Save(&user)
	if result.Error != nil {
		panic("Failed to update user")
	}
	fmt.Println("User updated successfully")
}

func main() {
	// 查询记录
	var user User
	result := db.First(&user, 1) // 查询 ID 为 1 的记录
	if result.Error != nil {
		panic("User not found")
	}
	fmt.Printf("User ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)
}

其它

在实际应用过程中,可能还会涉及到其他高级的操作,如关联查询、事务处理、分页等。

总的来说,gorm 框架为 go 连接数据库提供更为方便统一的接口,让我们只用专心于业务逻辑即可。