Gorm的使用 | 青训营

100 阅读3分钟

什么是Gorm

GORM是一个强大的Go语言开发框架,用于简化和优化数据库操作,类似于spring中的Mybatis框架。它提供了一个简洁的API,使得在Go应用程序中执行各种数据库任务变得更加容易。无论是创建、更新、查询还是删除数据库记录,GORM都能够帮助开发者减少繁琐的SQL操作,并且 gorm支持原生sql。本文将向您介绍如何使用GORM进行数据库操作。

安装GORM

首先,您需要安装GORM库。在终端中执行以下命令:

go get -u gorm.io/gorm

连接数据库

在使用GORM之前,需要先连接到数据库。GORM支持多种数据库,如MySQL、PostgreSQL、SQLite等。以下是一个连接到MySQL数据库的示例代码:

package main

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

func main() {
    // 设置数据库连接信息
    dsn := "user:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True&loc=Local"

    // 连接到数据库
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("无法连接到数据库")
    }
    
    // 在这里可以执行数据库操作
    // ...
}

将上述代码中的userpasswordhostportdatabase替换为您的实际数据库连接信息。

定义模型

在GORM中,模型是与数据库表对应的结构体。您需要定义一个模型来映射数据库表,并且GORM会自动为您处理数据库记录和结构体之间的转换。

type User struct {
    gorm.Model
    Username string
    Email    string
}

上述代码定义了一个名为User的模型,它继承了gorm.Model,该模型会自动添加IDCreatedAtUpdatedAtDeletedAt字段,用于跟踪记录的创建、更新和软删除。

创建记录

使用GORM创建记录非常简单。以下是一个示例代码,演示如何在数据库中创建一个新的用户记录:

newUser := User{
    Username: "john_doe",
    Email:    "john@example.com",
}

db.Create(&newUser)

查询记录

GORM提供了丰富的查询功能。以下是一些常见的查询示例:

查询单个记录

var user User
db.First(&user, 1) // 根据ID查询第一个用户记录
db.First(&user, "username = ?", "john_doe") // 根据用户名查询用户记录

查询多个记录

goCopy code
var users []User
db.Find(&users) // 查询所有用户记录
db.Where("email LIKE ?", "%example.com").Find(&users) // 查询邮箱包含"example.com"的用户记录

更新记录

更新记录也非常简单:

goCopy code
var user User
db.First(&user, 1)
user.Email = "new_email@example.com"
db.Save(&user)

删除记录

使用GORM删除记录也很方便:

goCopy code
var user User
db.First(&user, 1)
db.Delete(&user) // 软删除记录

原生sql使用

原生sql语句使用非常容易:

1.原生sql查询:您可以使用db.Raw()方法来执行原生SQL查询,并将结果映射到结构体或切片中。

type Result struct {   
    ID   int   
    Name string   
    Age  int 
}  
var result Result 
db.Raw("SELECT id, name, age FROM users WHERE id = ?", 3).Scan(&result)

2.原生SQL操作:您也可以使用db.Exec()方法来执行原生SQL操作,如插入、更新或删除数据。

result := db.Exec("UPDATE users SET email = ? WHERE username = ?", "new_email@example.com", "john_doe")

3.原生sql事务:在事务中执行原生SQL操作同样非常简单。您可以使用Transaction()方法来管理事务。

db.Transaction(func(tx *gorm.DB) error {
    // 在事务中执行原生SQL查询或操作
    tx.Exec("UPDATE users SET email = ? WHERE username = ?", "new_email@example.com", "john_doe")
    // 如果返回错误,事务会回滚;否则会提交
    return nil
})

总结

通过使用GORM,您可以轻松地进行数据库操作,而不必直接编写复杂的SQL语句。它提供了一组强大的功能,用于连接数据库、定义模型、创建、查询、更新和删除记录。通过这篇文章,您应该能够更好地理解如何在Go语言中使用GORM进行数据库操作。要深入了解更多功能和选项,请查阅GORM官方文档。