MyBatis、Struts2分页展示数据

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>

猜你喜欢

转载自blog.csdn.net/weixin_42273990/article/details/80723848