一,分页函数。
1,具体的分页类片段
例如,总共要展示六条数据,cotroller 设置了每页展示2条,把总条数6加载到 page 中,那么 page 中用总条数除以每页展示几条数据,就自动生成123,有三个页码的数组,每个页码对应部分的从数据库中查询的数据。
public class Pagination<E> {
private List<E> items;//具体的数据
private int itemsTotalCount = 0;//总数据条数
private List<Integer> showNums = new ArrayList<Integer>();
//根据查询的数据总数,和controller设置的每页展示几条数据,自动生成一个页码的数组。
private int showPage = 10;//显示10个页码,页码的小格子,如果有100页数据,只展示10个页码的小格子
private int pageSize = 10;
//每页展示多少条数据,controller中设置,也可以不设置。默认每页展示10条数据
private int pageNum = 1;//showNums页码的数组里一个个页码的代称,通过切换不同的页码,展示不同的数据
private boolean firstPage;//首页
private boolean lastPage;//最后一页
private int pageTotalCount = 0;//总页数,尾页
private int startIndex;//查询出来的每页的数据的开始的下标
private String sortField="createAt";//排序字段 数据库栏
private String sortDirection = "DESC";//排序方向 升序还是降序
......
}
当把具体的 6 条数据从数据库中查询出来,也加载到分页类中,每页数据从第几条开始展示是通过计算得出来的,第1页,从第0条开始展示,第2页从第2条开始展示,第3页从第4条数据开始展示,一共展示0,1;2,3;4,5;共6条数据。
public int getStartIndex() {
this.startIndex = (this.pageNum - 1) * this.pageSize;
if(this.startIndex <= 0){
this.startIndex = 0;
}
return this.startIndex;
}
2,动态的sql针对entity的字段,查询条件从前端页面提交到controller,传到数据库中对数据进行筛选。
包括计算需要展示的数据总数:
<select id="getTotalItemsCount" parameterType="com.langshan.onlineschoollangshan.domain.AuthUser" resultType="java.lang.Integer">
SELECT COUNT(id) FROM auth_user
<where>
<if test="status != null">
AND status =