使用 GORM(Go 的 ORM 库)连接数据库 | 青训营

98 阅读5分钟

介绍:

GORM是Go语言中一个强大的ORM(对象关系映射)库,它提供了简单易用的API来连接数据库并执行常见的增删改查操作。本文将展示如何使用GORM来连接数据库并实现基本的创建、读取、更新、删除功能。 本次实践尝试在kitex框架中实现一个学生信息注册和查询的简单http服务。其中的数据库部分使用GORM。

步骤1:安装GORM

首先,您需要在Go环境中安装GORM。可以使用以下命令来安装GORM:

go get -u gorm.io/gorm

步骤2:导入必要的包

在Go代码中,导入GORM和相应的数据库驱动程序是连接数据库的第一步。使用以下导入语句导入GORM和SQLite驱动程序:

import (
    "gorm.io/gorm"
    "gorm.io/driver/sqlite"
)

步骤3:建立数据库连接

在使用GORM之前,需要建立与数据库的连接。以下是一个示例代码片段,使用GORM连接到SQLite数据库,在这个代码片段中,将要使用的db作为StudentServiceImpl的一个成员变量进行初始化,Init函数需要在main.go中进行调用:

func (s *StudentServiceImpl) InitDB() {  
    db, err := gorm.Open(sqlite.Open("foo.db"), &gorm.Config{})  
    if err != nil {  
        panic(err)  
    }  
    s.Db = db  
}

步骤4:定义模型结构

在GORM中,模型结构对应于数据库中的表。需要定义一个结构。在本项目中,以注册服务为例,请求中会包含一个包含学生信息的json,想要插入gorm,首先要定义一个结构体来来表示表的列和关联。以下是一个示例模型结构的代码片段:

type Student struct {  
    Id int32  
    Name string  
    Email string  
    CollegeName string  
    CollegeAddress string  
    CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"`  
}

步骤5:增删改查

当使用GORM进行增删查改操作时,需要根据定义的模型结构来执行相应的操作,使用GORM对上述定义的Student结构体进行增删查改操作:

创建记录(插入数据):
要创建新的学生记录,我们可以使用以下代码。首先,创建一个Student结构体对象,并设置相应的字段值,例如姓名、邮箱、学院名称和学院地址。然后,使用db.Create()方法将学生对象插入数据库。

````
student := Student{
    Name:           "John Doe",
    Email:          "john@example.com",
    CollegeName:    "ABC College",
    CollegeAddress: "123 College Street",
}
db.Create(&student)
````

这将在数据库中创建一个新的学生记录,并自动生成一个唯一的ID。

读取记录:
要从数据库中读取学生记录,我们可以使用以下代码。首先,定义一个Student结构体对象来存储查询结果。然后,使用db.First()方法检索具有指定ID的第一条学生记录。 db.First(&student, 1) 这将从数据库中获取ID为1的学生记录,并将结果存储在student对象中。

更新记录:
要更新学生记录,我们可以使用以下代码。使用db.Model()方法指定要更新的模型对象,然后使用Update()方法指定要更新的字段和值。

````
db.Model(&student).Update("Email", "211250175@smail.nju.edu.cn")
````

更新学生记录的邮箱字段为"211250175@smail.nju.edu.cn"。

删除记录:
要删除学生记录,我们可以使用以下代码。使用db.Delete()方法指定要删除的模型对象。

db.Delete(&student)

从数据库中删除学生记录。

查询记录:
要查询学生记录,我们可以使用以下代码。首先,定义一个[]Student切片来存储查询结果。然后,使用db.Find()方法检索所有的学生记录。

var students []Student
db.Find(&students) // 查询所有学生记录

检索数据库中的所有学生记录,并将结果存储在students切片中。

使用条件查询:

    db.Where("college_name = ?", "nju").Find(&students)

检索学院名称为"nju"的学生记录。 排序查询结果: db.Order("name desc").Find(&students)

按照姓名字段降序对学生记录进行排序。

实现结果: 在实际的HTTP服务中,我们可以根据需要使用这些操作来完成学生信息的注册和查询功能。通过HTTP请求将学生信息发送到服务端,并使用GORM来将数据插入数据库。然后,可以通过HTTP请求查询学生信息,并使用GORM从数据库中检索数据。

使用curl等工具发送HTTP请求来测试我们的服务。例如使用以下命令向服务端发送一个学生信息注册的HTTP请求: curl -H "Content-Type: application/json" -X POST http://127.0.0.1:8888/studentservice/Register -d '{"id": 103, "name":"Easma", "college": {"name": "software", "address": "逸夫"}, "email": ["emma@nju.com"],"gender":"m"}

通过这个请求,我们可以将学生的姓名、邮箱、学院名称和学院地址等信息发送到服务端,并使用GORM将这些信息插入到数据库中。服务端处理完请求后,会返回相应的响应结果,指示注册是否成功。

通过实践验证了使用GORM连接数据库并实现基本的增删改查功能的可行性。GORM提供了简单易用的API和强大的功能,使得在Go语言中进行数据库操作变得更加便捷和高效。

GORM是一个强大的ORM库,它在Go语言中提供了便捷的数据库操作接口。通过使用GORM可以连接数据库、执行增删改查等操作,并在实践中实现各种业务需求。使用GORM可以极大地简化和加速数据库操作的开发过程。