mybatis下的分页
- MySQL
- 因为MySQL自带
limit
关键字分页
/**
起始索引start,结束索引end
int pageIndex=1;//当前页数
int countPage=3;//每页显示条目数
int start=(pageIndex-1)×countPage;//每页的起始索引
int end=countPage;//表示要显示的个数
因为索引从0开始
所以[start,end)=[0,3)
**/
@Select("select * from user_tab limit #{start},#{end}")
List<User>pageQuery(@Param("start")intstart,@Param("end")int end);
- Oracle
- oracle没有limit分页所以通过子查询完成
1.排序起别名u (select * from user_tab order by id ) u
2.查询所有及伪列 (select u.*,rownum r from (select * from user_tab order by id ) u)
3.完成分页查询 select * from (select u.*,rownum r from (select * from user_tab order by id ) u) where r<=#{1} and r>=#{0}
//1和0固定值,届时自动匹配大小
例如start=3,end=6则r<=3 and r>=6
start表示起始索引
end表示结束索引,也就是3-6和MySQL不同,end表示接下来显示几个
hibernate下的分页
- mysql
- select * from user_tab limit #{start},#{end}
- hibernate自带方法
- query.setMaxResults(countPage);//每页显示条目数
- query.setFirstResult((page-1)*countPage);//每页的第一个索引,hibernate索引从0开始算
- oracle
- hibernate自带方法
- query.setMaxResults(countPage);//每页显示条目数
- query.setFirstResult((page-1)*countPage);//每页的第一个索引,hibernate索引从0开始算
统一业务处理
<div>
<a href="Emp_page?operation=Home">首页</a>
<a href="Emp_page?operation=PgUp">上一页</a>
<a href="Emp_page?operation=PgDn">下一页</a>
<a href="Emp_page?operation=End">尾页</a>
</div>
private static int page = 1;//页标
private int countPage= 3;//每页个数
private int amount;//总条目
private int pageCount;//总页数
private String operation = "";//操作符
pageCount = (amount % countPage) == 0 ? amount / countPage : amount / countPage + 1;
switch (operation) {
case "PgDn":
System.out.println(operation);
if (page <= pageCount)
page++;
if (page > pageCount)
page = pageCount;
break;
case "PgUp":
System.out.println(operation);
if (page >= 1)
page--;
if (page <= 0)
page = 1;
break;
case "Home":
System.out.println(operation);
page = 1;
break;
case "End":
System.out.println(operation);
page = pageCount;
break;
}
====================================================