使用gorm连接数据库,并实现增删改查操作(实践文章) | 青训营

62 阅读3分钟

gorm简介

gorm是一个使go语言与数据库进行连接的框架工具,它的一部分操作可以简化我们的查询过程,从而更高效的获得查询结果。

安装和配置

1.安装gorm

我们需要打开终端输入以下两句话:

go get -u gorm.io/gorm 
go get -u gorm.io/driver/<your_database_driver>

2.引入依赖

我们需要在gorm数据库被应用的界面顶端都加上import依赖去声明一下gorm包。

import ( 
    "gorm.io/gorm" 
    "gorm.io/driver/<your_database_driver>" 
)

3.配置数据库连接

要创建一个配置数据库连接的函数,目的是便于配置全局使用。dsn就和Java中的差不多,主要是想表明账户名和密码还有连接地址和连接的库。<your_database_driver>是你的连接驱动,可以是mysql的也可以是sqlite(mysql的轻量型)的。

var db *gorm.DB 
func ConnectDatabase() { 
    dsn := "your_dsn_string" // 数据库连接字符串 
    db, err := gorm.Open(<your_database_driver>.Open(dsn), &gorm.Config{}) 
    if err != nil { 
        panic("Failed to connect to database") 
    } 
}

定义模型结构体

我们在操作数据库的表之前需要定义模型,模型的内容正好与数据库表中的列相对应。当模型的名字与表中的名字不一致时我们一般在模型的后面加上gorm:"column:xxx"。这样就可以让gorm识别当前模型是数据库中的哪个数据。

type User struct {
    ID uint
    Name string 
    Email string 
}

我们一般定义模型时也会加上CreatedAtUpdateAt,这样是为了方便记录创建的时间和修改的时间。

创建表

我们可以直接使用gorm直接把表给创建出来,以下是实例,可以根据这个进行其他表的创建:

func Migrate() { 
    db.AutoMigrate(&User{}) 
}

这样的话可以直接把表创建出来。

增删改查

平时我们要在数据库中插入一个新数据,我们可以使用Create的方法。代码使用如下:

func CreateUser(name, email string) { 
    user := User{
    Name: name,
    Email: email
    } 
    db.Create(&user) 
}

主要是用于创建新用户或者插入新数据。

在我看来,查询是这四个里面最简单的了,再gorm中提供了许多种查询方法,在这里我们使用First方法查询,就是需要用户的id然后就能够查询出来:

func FindUserByID(id uint) (User, error) { 
    var user User result := db.First(&user, id) 
    if result.Error != nil { 
    return User{}, 
    result.Error 
    } 
    return user, nil 
}

删可以说是除了修改在这四个里面最难的了,我们一般都是利用查询id对指定的用户进行删除。在gorm之中我们可以使用Delete方法。

func DeleteUser(id uint) { 
    var user User 
    result := db.First(&user, id) 
    if result.Error != nil { 
    return result.Error 
    } 
    db.Delete(&user)
}

上面就是删除某个指定数据的代码,我们先申请了一个User型,利用id将这个用户查询出来,我们再使用Delete方法把指定的用户进行删除。

我认为最难的就是修改,但是只是对于其他三个来说难而已,对于咱们的认知能力来说还是很简单的。 实现思路:我们可以先利用id查询出一个用户,然后再给这个用户设置好我们想改的值,最后再用Save方法将用户返回去。

func UpdateUser(id uint, name, email string) (User, error) { 
    var user User 
    result := db.First(&user, id) 
    if result.Error != nil { 
    return User{}, result.Error 
    } 
    user.Name = name 
    user.Email = email 
    db.Save(&user) 
    return user, nil 
}