在 Mybatis Plus 官方文档 - 分页插件说明 中可以看到分页插件支持的数据库,以及可配置的属性参数说明。这里只是结合工作中的项目说明一下该插件(还有另外一个分页插件 PageHelper
)的使用方式:
几乎每一个 web 项目都需要使用到分页,在不使用分页插件的时候,我们一般返回分页数据都是在 sql
语句后面添加 limit
语句,然后再配置一条 sql
语句来查询某些条件下的总条数:
// 查询数据
<select id="listByOrderId">
select * from order
<where>
<if>
...
</if>
...
</where>
limit #{pageIndex} , #{pageSize}
</select>
// 查询总数量
<select id="countByOrderId" resultType="java.lang.Integer">
select count(*) from order where orderId = #{orderId}
<where>
<if>
...
</if>
...
</where>
</select>
然后再新建一个分页对象用于返回数据,比如:
public class PageResult {
/**
* 总页数
*/
private int total;
/**
* 数据
*/
private List<T> list;
}
官方提供了几种通用分页查询:
// 无条件分页查询
IPage<T> page(IPage<T> page);
// 条件分页查询
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
// 无条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page);
// 条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
第一个参数必须是分页的参数 IPage
,后面的参数可以是查询参数
IPage<PayOrderListVO> listPayOrder(IPage<PayOrderListVO> query);
Page<PayOrderListVO> pageQuery = new Page<>(query.getPageIndex(), query.getPageSize());
IPage<PayOrderListVO> list = orderPayInfoMapper.listPayOrder(pageQuery);