Gorm框架学习 | 青训营笔记

103 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天。

Gorm是一款基于Go语言的ORM框架,它提供了很多有用的特性,可以帮助我们更快速、更高效地进行数据库操作。本篇文章将介绍Gorm框架的基本使用方法和一些常用特性。

安装

在开始使用Gorm之前,我们需要先安装它。Gorm可以使用go get命令进行安装,如下所示:

go get -u gorm.io/gorm

在安装完成后,我们可以开始使用Gorm进行数据库操作了。

连接数据库

在使用Gorm进行数据库操作之前,我们需要先连接数据库。在Gorm中,我们可以使用Open方法连接数据库。例如:

import "gorm.io/gorm"

func main() {
  db, err := gorm.Open("mysql", "user:password@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
  if err != nil {
    // handle error
  }
  defer db.Close()

  // ...
}

在以上代码中,我们使用Open方法连接了一个MySQL数据库。连接字符串中包含了用户名、密码、主机名、端口号、数据库名等信息。

定义Model

在使用Gorm进行数据库操作之前,我们需要先定义Model。在Gorm中,我们可以使用struct定义Model。例如:

type User struct {
  ID   uint   `gorm:"primary_key"`
  Name string `gorm:"size:255"`
  Age  int
}

在以上代码中,我们定义了一个User的Model,它包含了ID、Name和Age三个字段。在Gorm中,我们可以使用gormtag来指定字段名、类型、约束等信息。

创建记录

在Gorm中,我们可以使用Create方法创建记录。例如:

user := User{Name: "Tom", Age: 18}
db.Create(&user)

在以上代码中,我们使用Create方法创建了一个名字为Tom、年龄为18的用户记录。注意,我们需要传入一个指向User变量的指针作为参数。

查询记录

在Gorm中,我们可以使用Find方法查询记录。例如:

var users []User
db.Find(&users)

在以上代码中,我们使用Find方法查询了所有用户记录,并将查询结果保存在users变量中。注意,我们需要传入一个指向User切片的指针作为参数。

除了Find方法,Gorm还提供了其他很多有用的查询方法,例如FirstLastWhere等。这些方法可以帮助我们更方便地进行复杂的查询操作。

更新记录

在Gorm中,我们可以使用Save方法更新记录。例如:

user := User{Name: "Tom", Age: 18}
db.Create(&user)

user.Age = 20
db.Save(&user)

在以上代码中,我们使用Save方法更新了名字为Tom的用户记录的年龄为20。注意,我们需要传入一个指向User变量的指针作为参数。

删除记录

在Gorm中,我们可以使用Delete方法删除记录。例如:

user := User{Name: "Tom", Age: 18}
db.Create(&user)

db.Delete(&user)

在以上代码中,我们使用Delete方法删除了名字为Tom的用户记录。

事务操作

在Gorm中,我们可以使用Transaction方法进行事务操作。例如:

db.Transaction(func(tx *gorm.DB) error {
  user1 := User{Name: "Tom", Age: 18}
  tx.Create(&user1)

  user2 := User{Name: "Jack", Age: 20}
  tx.Create(&user2)

  return nil
})

在以上代码中,我们使用Transaction方法创建了一个事务,并在事务中创建了两个用户记录。如果出现错误,事务会自动回滚。

总结

本篇文章介绍了Gorm框架的基本使用方法和一些常用特性。通过学习本篇文章,我们可以了解到如何连接数据库、定义Model、进行增删改查操作、进行事务操作等。在实际开发中,我们可以根据需求和业务场景使用Gorm框架,快速高效地完成数据库操作。

最后,需要提醒的是,ORM框架虽然可以帮助我们快速高效地进行数据库操作,但也有一些缺点,例如性能不如原生SQL、限制较多等。在使用ORM框架时,我们需要权衡利弊,根据实际需求进行选择。同时,我们也需要深入了解ORM框架的工作原理和使用方法,才能更好地利用它们进行开发。