使用GORM框架分页查询5张表里label字段值为1的数据,并存在切片结构体里
时间: 2024-02-03 18:12:00 浏览: 91
假设5张表的结构体分别为:Table1、Table2、Table3、Table4、Table5,且它们都有一个名为“label”的字段,可以按照以下步骤进行分页查询:
1. 创建一个结构体用于存储查询结果,假设该结构体为:
```go
type Result struct {
Table string
Data interface{}
}
```
2. 创建一个切片用于存储查询结果,假设该切片为:
```go
var results []Result
```
3. 创建一个 GORM 的 DB 对象,这里假设已经成功连接数据库并创建了 GORM 的 DB 对象:
```go
db, err := gorm.Open(driverName, dataSourceName)
if err != nil {
panic(err)
}
defer db.Close()
```
4. 分别从每张表中查询数据并存入切片中:
```go
// 设置每页显示的记录数
pageSize := 10
// 从 Table1 表中查询数据并存入切片中
var table1Data []Table1
table1Query := db.Where("label = ?", 1).Limit(pageSize).Find(&table1Data)
if table1Query.Error != nil && !errors.Is(table1Query.Error, gorm.ErrRecordNotFound) {
panic(table1Query.Error)
}
results = append(results, Result{
Table: "Table1",
Data: table1Data,
})
// 从 Table2 表中查询数据并存入切片中
var table2Data []Table2
table2Query := db.Where("label = ?", 1).Limit(pageSize).Find(&table2Data)
if table2Query.Error != nil && !errors.Is(table2Query.Error, gorm.ErrRecordNotFound) {
panic(table2Query.Error)
}
results = append(results, Result{
Table: "Table2",
Data: table2Data,
})
// 从 Table3 表中查询数据并存入切片中
var table3Data []Table3
table3Query := db.Where("label = ?", 1).Limit(pageSize).Find(&table3Data)
if table3Query.Error != nil && !errors.Is(table3Query.Error, gorm.ErrRecordNotFound) {
panic(table3Query.Error)
}
results = append(results, Result{
Table: "Table3",
Data: table3Data,
})
// 从 Table4 表中查询数据并存入切片中
var table4Data []Table4
table4Query := db.Where("label = ?", 1).Limit(pageSize).Find(&table4Data)
if table4Query.Error != nil && !errors.Is(table4Query.Error, gorm.ErrRecordNotFound) {
panic(table4Query.Error)
}
results = append(results, Result{
Table: "Table4",
Data: table4Data,
})
// 从 Table5 表中查询数据并存入切片中
var table5Data []Table5
table5Query := db.Where("label = ?", 1).Limit(pageSize).Find(&table5Data)
if table5Query.Error != nil && !errors.Is(table5Query.Error, gorm.ErrRecordNotFound) {
panic(table5Query.Error)
}
results = append(results, Result{
Table: "Table5",
Data: table5Data,
})
```
5. 返回查询结果:
```go
return results
```
以上代码将按照每张表分别查询数据,并将查询结果存入一个切片中返回。如果需要实现分页功能,只需根据需要设置每页显示的记录数和当前页数即可。
阅读全文