1、DAO层接口
List<Emp> selectByPage(@Param(value="begin")Integer begin,
@Param(value="end")Integer end);
Integer count();
2、Mapper中动态SQL实现
select emp.id as empId,emp.name as empName,emp.salary as empSalary,
emp.age as empAge,dept.dept_name as deptName from(select e.*,rownum rn from ems_emp e where status=1)emp left join ems_dept dept on emp.dept_id=dept.dept_id where rn between #{begin} and #{end}
<select id="count" resultType="Integer">
select count(*) from ems_emp where status=1
</select>
3、Service实现类写法
@Override
public List<Emp> findByPage(Integer currentPage) {
List<Emp> list = new ArrayList<Emp>();
try{
Integer begin = (currentPage-1)*5+1;
Integer end = 5*currentPage;
EmpDAO empDAO = (EmpDAO) MybatisUtil.getMapper(EmpDAO.class);
list = empDAO.selectByPage(begin, end);
return list;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("网络的锅");
}
finally{
//关闭资源
MybatisUtil.close();
}
}
@Override
public Integer totalPage() {
try{
EmpDAO empDAO = (EmpDAO) MybatisUtil.getMapper(EmpDAO.class);
Integer count = empDAO.count();
Integer totalPage = null;
if(count%5==0){
totalPage = count/5;
}else{
totalPage = count/5+1;
}
return totalPage;
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
//关闭资源
MybatisUtil.close();
}
}
4、Action
private Integer currentPage;
private Integer totalPage;
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public String splitPage(){
if(currentPage==null){
currentPage = 1;
}
emps = es.findByPage(currentPage);
totalPage = es.totalPage();
System.out.println("currentPage="+currentPage);
System.out.println("totalPage="+totalPage);
return "splitPage";
}
5、jsp
<div align="center">
<span>
<s:if test="currentPage==1">
首页
</s:if>
<s:if test="currentPage>1">
<a href="${ pageContext.request.contextPath }/emp/splitPage?currentPage=1">首页</a>
</s:if>
</span>
<span>
<s:if test="currentPage==1">
上一页
</s:if>
<s:if test="currentPage>1">
<a href="${ pageContext.request.contextPath }/emp/splitPage?currentPage=<s:property value="currentPage-1"/>">上一页</a>
</s:if>
</span>
<span>
<s:iterator begin="1" end="totalPage" var="i">
<s:if test="currentPage==#i">
<s:property />
</s:if>
<s:else>
<a href="${ pageContext.request.contextPath }/emp/splitPage?currentPage=<s:property />"><s:property /></a>
</s:else>
</s:iterator>
</span>
<span>
<s:if test="currentPage==totalPage">
下一页
</s:if>
<s:if test="currentPage<totalPage">
<a href="${ pageContext.request.contextPath }/emp/splitPage?currentPage=<s:property value="currentPage+1"/>">下一页</a>
</s:if>
</span>
<span>
<s:if test="currentPage==totalPage">
尾页
</s:if>
<s:if test="currentPage<totalPage">
<a href="${ pageContext.request.contextPath }/emp/splitPage?currentPage=<s:property value="totalPage"/>">尾页</a>
</s:if>
</span>
<span>当前第<s:property value="currentPage"/>页/共<s:property value="totalPage"/>页</span>
</div>