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>