Java实现分页

正好现在在学习DRP,遇见了分页的问题,下边就来整理一下分页的思路,希望可以有一个好的理解。

下边就是分页的流程图


       A.首先分装分页信息,将每页多少条数据,第几页,查询数据,结果集都封装起来

/**
 * 封装分页信息
 * @author 薛宇
 *
 */
public class PageModel
   
   
    
     {
	//结果集
	private List
    
    
     
      list;
	
	//查询记录数
	private int totalRecords;
	
	//每页多少条数据
	private int pageSize;
		
	//第几页
	private int pageNO;
	
	
	/**
	 * 总页数
	 * @return
	 */
	public int getTotalPages(){
		return (totalRecords + pageSize -1) / pageSize;
	}

	/**
	 * 取得首页
	 * @return
	 */
	public int getTopPageNo(){
		return 1;
	}
	/**
	 * 取得尾页
	 * @return
	 */
	public int getButtomPageNo(){
		return getTotalPages();
	}
	
	/**
	 * 上一页
	 * @return
	 */
	public int getPreviousPageNo(){
		if (pageNO <= 1) {
			return 1;
		}
		return pageNO - 1;
	}
	
	/**
	 * 下一页
	 * @return
	 */
	
	public int getNextPageNo(){
		if (pageNO >= getButtomPageNo()){
			return getButtomPageNo();
		}
		return pageNO + 1;	
	}
	public List
     
     
      
       getList() {
		return list;
	}

	public void setList(List
      
      
       
        list) {
		this.list = list;
	}

	public int getTotalRecords() {
		return totalRecords;
	}

	public void setTotalRecords(int totalRecords) {
		this.totalRecords = totalRecords;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNO() {
		return pageNO;
	}

	public void setPageNO(int pageNO) {
		this.pageNO = pageNO;
	}
	
	
      
      
     
     
    
    
   
   
           B.添加查询数据,分页

/**
	 * 分页查询	
	 * @param pageNo
	 * @para, pageSize
	 * @return
	 */
	public PageModel
   
   
    
     findUserList(int pageNo,int pageSize){
		StringBuffer sbSql = new StringBuffer();	
		sbSql.append("select user_id, user_name, password, contact_tel, email, create_date ")
			.append("from ")
			.append("( ")
			.append("select rownum rn, user_id, user_name, password, contact_tel, email, create_date ")
			.append("from ")
			.append("( ")
			.append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id <> 'root' order by user_id ")
			.append(")  where rownum <= ? ")
			.append(")  where rn > ? ");
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		PageModel
    
    
     
      pageModel = null;
		try {
			conn = DbUtil.getConnection();
			pstmt = conn.prepareStatement(sbSql.toString());		
			pstmt.setInt(1, pageNo * pageSize);
			pstmt.setInt(2, (pageNo - 1) * pageSize);
			rs = pstmt.executeQuery();
			List
     
     
      
       userList = new ArrayList
      
      
       
       ();
			while (rs.next()){
				User user = new User();				
				user.setUserId(rs.getString("user_id"));
				user.setUserName(rs.getString("user_name"));
				user.setPassword(rs.getString("password"));
				user.setContactTel(rs.getString("contact_tel"));
				user.setEmail(rs.getString("email"));
				user.setCreateDate(rs.getTimestamp("create_date"));
				userList.add(user);
			}
			pageModel = new PageModel
       
       
         (); pageModel.setList(userList); pageModel.setTotalRecords(getTotalRecords(conn)); pageModel.setPageSize(pageSize); pageModel.setPageNO(pageNo); }catch(SQLException e){ e.printStackTrace(); }finally{ DbUtil.close(rs); DbUtil.close(pstmt); DbUtil.close(conn); } return pageModel; } 
       
      
      
     
     
    
    
   
   

            C.在JSP页面上显示
<%	
	int pageNo = 1;
	int pageSize = 2;
	String pageNoString = request.getParameter("pageNo");
	if (pageNoString != null){
		pageNo = Integer.parseInt(pageNoString);
	} 
  	PageModel
    
    
     
      pageModel = UserManager.getInstace().findUserList(pageNo, pageSize);

 %>
  页面上迭代
  <%
					List
     
     
      
       userList = pageModel.getList();
					for (Iterator
      
      
       
        iter=userList.iterator(); iter.hasNext();){
						User user = (User)iter.next();
					
				 %>
				
					
						
       
       
					
					
						<%=user.getUserId() %>
					
					
						<%=user.getUserName() %>
					
					
						<%=user.getContactTel()%>
					
					
						<%=user.getEmail()%>
					
					
						<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate())%>
					
				
				<%
				}
				 %>

 
      
      
     
     
    
    



/** * 根据等级查询类目树 * * @param level * @return */ @Override public List queryCategoryTree(Integer level) { //查询当前级别下类目 List list = categoryDAO.list(level); //组装好的类目树,返回前端 List categoryTree = new ArrayList(); //所有类目 List allDTOList = new ArrayList(); if (CollectionUtils.isEmpty(list)) { return categoryTree; } for (CategoryDO categoryDO : list) { allDTOList.add(new CategoryTreeDTO().convertDOToDTO(categoryDO)); } //当前等级类目 categoryTree = allDTOList.stream().filter(dto -> level.equals(dto.getLevel())).collect(Collectors.toList()); for (CategoryTreeDTO categoryTreeDTO : categoryTree) { //组装类目为树结构 assembleTree(categoryTreeDTO, allDTOList,Constants.CATEGORY_MAX_LEVEL - level); } return categoryTree; } /** * 组装树 * * @param categoryTreeDTO * @param allList * @param remainRecursionCount 剩余递归次数 * @return */ public CategoryTreeDTO assembleTree(CategoryTreeDTO categoryTreeDTO, List allList, int remainRecursionCount) { remainRecursionCount--; //最大递归次数不超过Constants.CATEGORY_MAX_LEVEL-level次,防止坏数据死循环 if(remainRecursionCount < 0){ return categoryTreeDTO; } String categoryCode = categoryTreeDTO.getCategoryCode(); Integer level = categoryTreeDTO.getLevel(); //到达最后等级树返回 if (Constants.CATEGORY_MAX_LEVEL == level) { return categoryTreeDTO; } //子类目 List child = allList.stream().filter(a -> categoryCode.equals(a.getParentCode())).collect(Collectors.toList()); if (null == child) { return categoryTreeDTO; } categoryTreeDTO.setChildren(child); //组装子类目 for (CategoryTreeDTO dto : child) { assembleTree(dto, allList,remainRecursionCount); } return categoryTreeDTO; }
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值