GORM 查询构建器(Where、Select、Limit、Order 等)
GORM 提供了功能强大的查询构建器,可以通过简单的链式调用实现复杂的查询操作。本文将介绍 GORM
的查询构建器的基本用法,包括常见的方法 Where
、Select
、Limit
、Order
等。
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. Limit
和 Offset
分页
Limit
:限制返回的记录数量。
Offset
:跳过指定数量的记录。
示例:分页查询
1
| db.Limit(10).Offset(20).Find(&users)
|
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)
|
- 查询字段
name
和 email
。
- 条件为
age > 18
。
- 按
created_at
降序排序。
- 获取第 11 到 15 条记录。
7. 总结
GORM 查询构建器的核心方法:
Where
:设置查询条件。
Select
:指定查询字段。
Limit
/ Offset
:分页操作。
Order
:结果排序。