分页技术

UsersDAO

oracle实现

public class UsersDAO {
	
	private JDBCTemplate template;
	
	public UsersDAO() {
		template = new JDBCTemplate() {
			
			@Override
			protected RowMapper getRowMapper() {
				// TODO Auto-generated method stub
				return new UsersMapper();
			}
		};
	}
	//分页查询
	public PageModel<UserBean> getScrollData(int currentPage, int pageSize ){
		StringBuffer sbSql = new StringBuffer();
		sbSql.append("select * ")
		.append("from (")
			.append("select i.*, rownum rn from (")
			.append("select u.id, u.username, u.password, u.age ")
			.append("from users u")
			.append(" order by u.id")
			.append(") i where rownum<=? ")
			.append(") ")
			.append("where rn >? ");
		System.out.println("sql=" + sbSql.toString());
		Object[] params = new Object[2];
		PageModel<UserBean> pageModel= null;
		params[0]=currentPage * pageSize;
		params[1]=(currentPage - 1) * pageSize;
		List userList =template.query(sbSql.toString(), params);
		pageModel = new PageModel<UserBean>();
		pageModel.setList(userList);
		pageModel.setTotalRecords(getTotalRecords());
		pageModel.setPageNo(currentPage);
		pageModel.setPageSize(pageSize);
	    return pageModel;
	}
	//获得用户总记录数
	public int getTotalRecords() 
	{
		String sql = "select count(*) from users";
		Object[] params = new Object[0];
		int result = template.selectCount(sql, params);		
		return result;		
	}

}

select * from  (select p.*,rownum rn from T_CHK_LOOK_PLAN p where  rownum <= sizePage*nowPage)
           where rn >=(sizePage*(nowPage-1))+1;


mysql实现

public class UsersDAO {
	
	private JDBCTemplate template;
	
	public UsersDAO() {
		template = new JDBCTemplate() {
			
			@Override
			protected RowMapper getRowMapper() {
				// TODO Auto-generated method stub
				return new UsersMapper();
			}
		};
	}
	//分页查询
	public PageModel<UserBean> getScrollData(int currentPage, int pageSize ){
		String sql = "select * from users limit ?,?";
		Object[] params = new Object[2];
		PageModel<UserBean> pageModel = null;
		params[0]=(currentPage - 1) * pageSize;
		params[1]=pageSize;
		List userList =template.query(sql, params);
		pageModel = new PageModel<UserBean>();
		pageModel.setList(userList);
		pageModel.setTotalRecords(getTotalRecords());
		pageModel.setPageNo(currentPage);
		pageModel.setPageSize(pageSize);
	    return pageModel;
	}
	//获得用户总记录数
	public int getTotalRecords() {
		String sql = "select count(*) from users";
		Object[] params = new Object[0];
		int result = template.selectCount(sql, params);		
		return result;		
	}

}


/**
 * 封装分页逻辑
 * @author Administrator
 *
 */

public class PageModel<T> {
	
	//结果集
	private List<T> 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 getPreviousPageNo() {
		if (this.pageNo <= 1) {
			return 1;
		}
		return this.pageNo - 1;
	}
	
	/**
	 * 下一页
	 * @return
	 */
	public int getNextPageNo() {
		if (this.pageNo >= getButtomPageNo()) {
			return getButtomPageNo();
		}
		return this.pageNo + 1;
	}
	
	/**
	 * 尾页
	 * @return
	 */
	public int getButtomPageNo() {
		return getTotalPages();
	}
	
	public List<T> getList() {
		return list;
	}

	public void setList(List<T> 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;
	}
}


/**
 * 用户管理类
 * @author qiutao
 */

public class UserManager {
 /** 用户管理 DAO */
 private UsersDAO userDAO = new UsersDAO(); 
    /**
     * 得到用户总数
     * @return 用户记录总数
     */
 public int getUserTotalCount(){
  return userDAO.getTotalRecords();
 }
 /**
  * 获取总页面数.
  * 
  * @param pageSize
  *            一页显示数据量
  * @return 页面总数
  */
 public int getTotalPage(int pageSize) {
  int totalCount = userDAO.getTotalRecords();
  // 得到页面总数
  int totalPageCount = ((totalCount + pageSize) - 1) / pageSize;
  return totalPageCount;
 } 
 /**
  * 分页显示用户数据.
  * @param currentPage 当前页码, 从 1 开始
  * @param pageSize 每页显示数据量
  * @return 用户数据
  */
 public PageModel<UserBean> findPagedAll(int currentPage, int pageSize) {
  return userDAO.getScrollData(currentPage, pageSize);
 }
 public static void main(String[] args) {
  PageModel<UserBean> pageModel=new UserManager().findPagedAll(1, 3);
  for (UserBean user : pageModel.getList()) {
   System.out.println(user.getUsername());
  }
 } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值