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

110 阅读2分钟

本人使用了gin+gorm+mysql,使用RESTful快速开发,由于本人在接触go语言之前是学java web开发的,所以使用go语言进行web后端开发就有些java代码规范的影子,见谅。


这篇文章并不会对gorm的详细操作进行讲解,只是记录我在使用gorm实现增删改查的大概过程


首先要进行增删改查操作肯定要有数据库,这次就使用student下的department表

image.png

在entity包下创建department的实体
package entity

type Department struct {  
DeptId int `json:"deptId"`  
DeptName string `json:"deptName"`  
}  
 
func (Department) TableName() string {  
return "department"  
}

安装mysql驱动,会顺带着把gor驱动也安装上

go get -u gorm.io/driver/mysql

go get -u gorm.io/gorm

配置数据库连接,使用gorm.Open()方法,获得DB类型实例,用于后面的数据库读写操作

1.创建连接

创建方法与database/sql的Open方法基本一致,需要指明驱动类型

var db *gorm.DB
func main() {
   dsn := "root:root@tcp(127.0.0.1:3306)/student?charset=utf8"
   conn, err := gorm.Open("mysql",dsn)
   if err != nil {
      panic(err)
   }
   defer conn.Close()
   db = conn
}

有了前面的铺垫,下面就可以执行真正写数据库操作了。

我们要对department表进行如下实现
  • 查询全部数据GetAll()
  • 按部门id查询GetById()
  • 增添部门AddDept()
  • 修改部门信息UpdateDeptInfo()
  • 按id删除部门DeleteUserById()

全局变量 var db *gorm.DB

查询全部数据使用DB.Find()方法,传入department切片类型的地址
单条查询用First()方法即可, sql语句会在最后添加order by id limit 1

gorm库默认不会自动返回新插入记录的id,需要我们自己额外处理。
我们想获取刚插入数据的自增Id,本质上是通过sql语句SELECT LAST_INSERT_ID() 获取上一条插入语句的自增id

那么gorm新增记录后获取自增id的步骤如下:

  1. 使用db.Create插入记录
  2. 执行sql语句SELECT LAST_INSERT_ID(),获取Id
插入使用Create()方法,注意需要传入指针,因为hooks的方法等绑定在指针上
修改部门信息
dept := &Department{}  
err := context.ShouldBindJSON(&dept)  
if err != nil {  
context.JSON(200, "err")  
return  
}  
affected := DB.Model(&Department{}).Where("dept_id=?", dept.DeptId).Updates(dept).RowsAffected  
context.JSON(200, affected)  
根据Where条件删除数据

用法:db.Where(条件表达式).Delete(空模型变量指针)

提示:这里Delete函数需要传递一个空的模型变量指针,主要用于获取模型变量绑定的表名。 不能传递一个非空的模型变量,否则就变成删除指定的模型数据,自动在where语句加上类似id = 2这样的主键约束条件。


image.png

image.png 我们使用Apifox对我们的写的五个接口进行测试

image.png

image.png

image.png

image.png

image.png

五个接口的运行一切正常,因此我们实现了对department表的简单的增删改查。