golang分页查询语句

2023-05-15 08:05:39 查询 语句 分页

Go语言中进行分页查询有很多种实现方式,本文将介绍其中一种实现方式:使用limit和offset关键字。具体实现如下:

func queryData(pageSize, pageNum int) ([]Data, error) {
    // 计算数据偏移量
    offset := (pageNum - 1) * pageSize

    // 拼接查询语句
    query := fmt.Sprintf("SELECT * FROM data LIMIT %d OFFSET %d", pageSize, offset)

    // 执行查询语句并返回结果
    rows, err := db.Query(query)
    if err != nil {
        return nil, err
    }
    defer rows.Close()

    data := []Data{}
    for rows.Next() {
        // 解析查询结果
        var id int
        var name string
        var age int
        err = rows.Scan(&id, &name, &age)
        if err != nil {
            return nil, err
        }

        // 将数据添加到结果集中
        data = append(data, Data{
            ID:   id,
            Name: name,
            Age:  age,
        })
    }

    return data, nil
}

该函数可以接受两个参数:pageSize和pageNum,分别表示每页数据大小和当前页码。函数内部使用这两个参数计算数据的偏移量,并使用limit和offset关键字拼接查询语句,然后执行查询语句并解析结果集,最后将数据添加到结果集中并返回。

使用该函数进行分页查询非常简单,只需要指定每页数据大小和当前页码即可。比如,我们可以按照每页10条数据进行分页查询,查询第3页数据的代码如下:

data, err := queryData(10, 3)
if err != nil {
    log.Fatal(err)
}

// 输出查询结果
for _, d := range data {
    fmt.Printf("ID=%d, Name=%s, Age=%d
", d.ID, d.Name, d.Age)
}

该代码将查询第3页数据,每页数据大小为10条,并将查询结果输出到控制台。如果查询过程中出现错误,程序将打印错误信息并退出。

以上就是golang分页查询语句的详细内容,更多请关注其它相关文章!

相关文章