GORM | 青训营笔记

92 阅读3分钟

GORM是一款基于Go语言的ORM框架,目前是GitHub上最受欢迎的Go语言ORM框架之一。GORM的全称是Go Relational Object Mapping,它提供了一套简单易用的API,能够使开发者轻松地完成对象和关系的映射,实现面向对象的方式操作关系型数据库。

在使用GORM之前,首先需要在Go项目中导入GORM的依赖包:

Copy Code
import "github.com/jinzhu/gorm"

然后,就可以使用GORM进行数据库操作了。

连接数据库

在使用GORM访问数据库之前,需要先建立数据库连接。GORM支持多种数据库,例如MySQL、PostgreSQL、SQL Server等等。对于MySQL数据库,可使用以下代码进行连接:

Copy Code
db, err := gorm.Open("mysql", "user:password@tcp(host:port)/dbname?charset=utf8&parseTime=True&loc=Local")
if err != nil {
    panic("failed to connect database")
}
defer db.Close()

其中,user为连接MySQL所需的用户名,password为密码,host为MySQL服务器地址,port为端口号,dbname为连接的数据库名。

定义模型

在GORM中,使用结构体来表示数据库中的表。结构体中的字段可以与表中的列一一对应。在结构体中可以使用gorm标签来指定字段的类型、限制条件以及约束等信息。

例如,定义一个users表对应的结构体可以如下:

Copy Code
type User struct {
    gorm.Model
    Name    string `gorm:"type:varchar(100);unique"`
    Age     uint   `gorm:"default:18"`
    Email   string `gorm:"type:varchar(100);unique"`
}

其中,Model结构体包含了表的通用字段,例如ID、创建时间、更新时间和删除时间。Name、Age、Email分别对应表中的列,使用gorm标签注明了字段类型以及约束条件。

数据库操作

创建数据

使用GORM创建一条数据可以如下:

Copy Code
user := User{Name: "Alice", Age: 22, Email: "alice@example.com"}
db.Create(&user)

以上代码会向users表中插入一条数据。Create方法第一个参数为要插入的数据,第二个参数为插入之后自动更新的数据,&user表示将变量user的地址传递给Create方法,以便在插入成功后可以自动更新user的ID、创建时间等信息。

查询数据

使用GORM查询数据库可以如下:

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

以上代码会查询users表中的所有数据,并将数据保存到切片变量users中。如果不需要查询全部数据,可以使用Where方法进行筛选:

Copy Code
db.Where("age > ?", 20).Find(&users)

此代码将查找年龄大于20的用户。

更新数据

使用GORM更新数据可以如下:

Copy Code
db.Model(&user).Update("Age", 25)

此代码将更新名为user的用户的年龄为25。Update方法的第一个参数为要更新的模型,第二个参数为要更新的键值对。

删除数据

使用GORM删除数据可以如下:

Copy Code
db.Delete(&user)

此代码将删除名为user的用户的数据。

总结

GORM是一款易用、灵活性高的ORM框架,能够帮助Go开发者更加方便地进行数据库操作。通过简单的配置和使用,可以快速上手,提高生产效率。