由于SQL Server结合Mybatis Plus分页查询耗时过长,简单分页查询用postman测试接口平均2.5s响应时间,手写分页查询后postman测试接口平均100ms响应时间
话不多说,let's do it!
先查总数据量
SELECT COUNT(id) FROM table
再查分页数据
SELECT * FROM ( SELECT TOP ( ? * ? ) row_number ( ) OVER ( ORDER BY id ) AS rownumber, * FROM table) temp_rows WHERE rownumber > ( ? - 1 ) * ?;
first ? 指的是页码 (page),second ? 指的是每页数据量 (size)
写一个分页展示类
@Getter
@Setter
/**
* 拟名MPage是模仿IPage,M意指微软
*/
public class MPage<T> {
/**
* 数据
*/
private List<T> data;
/**
* 页码
*/
private Integer pageNum;
/**
* 每页展示数据量
*/
private Integer pageSize;
/**
* 总数据量
*/
private Integer total;
public MPage() {
}
private MPage(List<T> data, Integer pageNum, Integer pageSize, Integer total) {
this.data = data;
this.pageNum = pageNum;
this.pageSize = pageSize;
this.total = total;
}
public MPage<T> initData(List<T> data, Integer pageNum, Integer pageSize, Integer total){
return new MPage<>(data, pageNum, pageSize, total);
}
}
大功告成