GORM-查询构建器

GORM 查询构建器(Where、Select、Limit、Order 等)

GORM 提供了功能强大的查询构建器,可以通过简单的链式调用实现复杂的查询操作。本文将介绍 GORM
的查询构建器的基本用法,包括常见的方法 WhereSelectLimitOrder 等。


1. 准备工作

在开始之前,确保已完成以下操作:

  • 安装 GORM 及数据库驱动程序。
  • 定义好模型并配置数据库连接。

示例模型

1
2
3
4
5
6
7
type User struct {
ID uint `gorm:"primaryKey"`
Name string
Email string
Age int
CreatedAt time.Time
}

2. Where 条件查询

Where 用于添加查询条件。支持占位符、结构体和 map 等多种方式。

示例:简单条件查询

1
2
var users []User
db.Where("age > ?", 18).Find(&users)

示例:多个条件

1
db.Where("age > ? AND name = ?", 18, "Alice").Find(&users)

示例:使用结构体

1
db.Where(&User{Name: "Alice", Age: 25}).Find(&users)

示例:使用 map

1
db.Where(map[string]interface{}{"name": "Alice", "age": 25}).Find(&users)

3. Select 指定字段

Select 用于选择特定字段,减少查询的数据量。

示例:选择部分字段

1
db.Select("name, email").Where("age > ?", 18).Find(&users)

4. LimitOffset 分页

  • Limit:限制返回的记录数量。
  • Offset:跳过指定数量的记录。

示例:分页查询

1
db.Limit(10).Offset(20).Find(&users) // 跳过 20 条记录,获取接下来的 10 条

5. Order 排序

Order 用于对查询结果排序。

示例:按单字段排序

1
db.Order("age desc").Find(&users)

示例:按多字段排序

1
db.Order("age desc, name").Find(&users)

6. 综合示例

以下是一个包含多种查询构建器方法的综合示例:

1
2
3
4
5
6
db.Select("name, email").
Where("age > ?", 18).
Order("created_at desc").
Limit(5).
Offset(10).
Find(&users)
  • 查询字段 nameemail
  • 条件为 age > 18
  • created_at 降序排序。
  • 获取第 11 到 15 条记录。

7. 总结

GORM 查询构建器的核心方法:

  • Where:设置查询条件。
  • Select:指定查询字段。
  • Limit / Offset:分页操作。
  • Order:结果排序。