# DBAPI 如何优雅的实现分页查询功能

# 背景

  • 分页查询的时候,用户往往需要传入当前第几页pageNo和每页显示的条数pageSize参数,根据这两个参数,从数据库中查询出当前页的数据。

  • 以 mysql 为例,分页查询的 sql 语句如下:

select * from t_user limit 30,10

limit 30,10表示从第 31 条记录开始,查询 10 条记录。

# 参数动态计算

  • 在 DBAPI 中参数注入 sql 的话就要写成
select * from t_user limit #{offset}, #{pageSize}
  • 而这里的offset参数每次都要根据pageNopageSize动态计算,offset=(pageNo-1)*pageSize
  • 为了解决这个动态计算的需求,DBAPI 提供了参数处理插件,可以对请求参数进行用户自定义的处理,并且官方已经实现了分页插件,该插件已经上传到插件市场 (opens new window),用户下载使用即可。

下面具体来看插件如何使用

# 分页插件使用

  1. 访问插件市场 (opens new window),下载分页插件,上传到 DBAPI 的extlib目录或者lib目录下,重启 DBAPI 服务

  1. 创建 API,添加参数pageNo pageSize

API 必须至少包含两个参数,pageNopageSizepageNo表示当前第几页,pageSize表示每页显示的条数

  1. sql 编写

sql 中使用参数offsetpageSizeoffset表示查询记录的开始位置,pageSize表示每页显示的条数

select * from t_city limit #{offset}, #{pageSize}

  1. 全局插件-参数处理中选择分页插件

插件参数不用填写,非必填

  1. 测试

保存 API,请求测试可以看到分页成功。


# 注意

注意此插件在个人版4.0.16及以上、企业版4.1.10及以上版本支持