gin + gorm实现分页和条件查询
时间: 2024-10-19 11:06:45 浏览: 59
基于Gin、Gorm、Vue 实现的在线练习系统源码.zip
5星 · 资源好评率100%
Gin (Go Web Framework) 和 GORM (Go ORM) 结合使用时,可以方便地处理Web应用中的分页和条件查询。以下是基本步骤:
1. **安装依赖**:
首先需要安装Gin和GORM库,你可以通过`go get`命令获取:
```
go get -u github.com/gin-gonic/gin
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite // 或者其他数据库驱动如mysql、postgres等
```
2. **设置GORM连接**:
```go
import (
"gorm.io/driver/mysql"
"gorm.io/driver/sqlite"
_ "github.com/go-sql-driver/mysql"
"gorm.io/gorm"
)
var db *gorm.DB
func init() {
// 根据你的数据库选择合适的初始化方式
if dbHost := os.Getenv("DB_HOST"); dbHost != "" {
dsn := fmt.Sprintf("%s:%s@/%s?charset=utf8mb4&parseTime=True&loc=Local", dbHost, os.Getenv("DB_USER"), os.Getenv("DB_NAME"))
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
} else {
db, err = gorm.Open(sqlite.Open("example.db"), &gorm.Config{})
}
if err != nil {
panic("failed to connect database")
}
}
```
3. **分页查询**:
使用GORM的`Offset`和`Limit`方法实现分页,例如查询第5页,每页10条数据:
```go
var users []User
perPage := 10
offset := (page - 1) * perPage
db.Offset(offset).Limit(perPage).Find(&users)
```
4. **条件查询**:
GORM支持复杂的查询条件,例如根据某个字段筛选数据:
```go
var filteredUsers []User
db.Where("age > ?", 18).Where("status = ?", "active").Find(&filteredUsers)
```
这里`Where`函数用于指定查询条件。
阅读全文