您的位置:

如何使用Gorm进行高效的MySQL数据库查询?

一、连接数据库

使用Gorm进行数据库查询,必须先连接数据库。

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

func main() {
    dsn := "user:password@tcp(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local" // 连接 MySQL 数据库
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    
    if err != nil {
        panic(err)
    }
}

其中dsn是连接数据库的信息字符串。

二、定义数据库模型/结构体

使用Gorm进行高效的MySQL数据库查询,我们需要定义表格关联的模型/结构体。定义模型/结构体时,可以指定表格名、列名、数据类型等详细信息。

type User struct {
    ID       uint   `gorm:"primary_key"`
    Name     string `gorm:"type:varchar(100)"`
    Age      int
    Birthday time.Time
    Email    string `gorm:"type:varchar(100);unique_index"`
    Password string
}

如果不指定,则使用默认值,例如表格名是结构体名的复数形式。但是,Gorm提供了灵活的选项,以便开发者自由地选择模型/结构体的映射规则。

三、Row查询

在Gorm中,可以使用db.First()方法查询单个行。就像这样:

//查询id=1的用户信息
var user User
db.First(&user, 1) // SELECT * FROM users WHERE id = 1;

//查询第一个匹配到的用户信息
var user User
db.Where(&User{Name: "jinzhu"}).First(&user)

//SELECT * FROM users WHERE name = 'jinzhu' limit 1;

四、Find查询

在Gorm中,可以使用db.Find()方法查询多个行。就像这样:

// 查询所有的用户
var users []User 
db.Find(&users) // SELECT * FROM users;

// 条件查询
db.Where("age = ?", 20).Find(&users) // SELECT * FROM users WHERE age = 20;

五、创建记录

在Gorm中,可以使用db.Create()方法创建新的记录,就像这样:

// 创建新用户
db.Create(&User{Name: "jinzhu", Age: 18, Birthday: time.Now()})

// 批量插入
db.Create([]User{{Name: "jinzhu", Age: 18}, {Name: "jinzhu 2", Age: 20}})

六、更新记录

在Gorm中,可以使用db.Save()方法来更新记录。除此之外,还可以使用db.Updates()和db.UpdateColumn()方法来更新记录。

// 更新所有列
db.Save(&user)

// 更新选定列
db.Model(&user).Update("name", "hello")

// 更新多列
db.Model(&user).Updates(User{Name: "hello", Age: 18})

// 更新指定列
db.Model(&user).UpdateColumn("name", "hello")

// 基于条件更新
db.Table("users").Where("id = ?", 1).Update("name", "hello")

七、删除记录

在Gorm中,可以使用db.Delete()方法来删除记录。

// 删除单个记录
db.Delete(&User{}, 1)

// 删除所有符合条件的记录
db.Where("age = ?", 18).Delete(&User{})

// 硬删除记录(不使用软删除)
db.Unscoped().Where("age = ?", 18).Delete(&User{})

以上便是如何使用Gorm进行高效的MySQL数据库查询所需的全部内容。