SSH 分页实现

1.PageInfo工具类

/***
 * 
 *  @Title: PageInfo.java 
 *  @Description: 主要是针对于oracle数据库
 *  Mysql数据的分页函数limit(?,?)
 *  第一个问号:起始数
 *  第二个问好:偏移量(即每页显示的条目数)
 *  即不用调用getEndSize()来结算尾页
 *  @date: 2018年10月12日 上午8:28:00
 */
public class PageInfo {
	
	//每页显示的条目数
	private Integer pageSize;
	//页数
	private Integer pageNum;
	//总条数
	private Integer totalSize;
	//开始条数
	private Integer start;
	//最后条数
	private Integer end;
	//总页数
	public Integer totalPage;
	
	/***
	 * 
	 *  @Description: 计算总页数
	 *  @param totalSize 总条数
	 *  @param pageSize 每页条目数
	 *  @return
	 */
	public Integer getSumPage(Integer totalSize, Integer pageSize) {
		checkZero(pageSize);
		if (totalSize % pageSize == 0) {
			totalPage = totalSize / pageSize;
		} else {
			totalPage = totalSize / pageSize + 1;
		}
		return totalPage;
	}
	
	/***
	 * 
	 *  @Description: 計算起始條數
	 *  @param pageNum 当前页数
	 *  @param pageSize 每页条目数
	 *  @return startSize
	 */
	public Integer getStartSize (Integer pageNum, Integer pageSize) {
		checkZero(pageSize);
		if (pageNum >= 1) {
			start = (pageNum-1) * pageSize;
		} else {
			start = 0;
		}
		return start;
	}
	
	/***
	 * 
	 *  @Description: 計算末尾條數
	 *  @param pageNum
	 *  @param pageSize
	 *  @return endSize
	 */
	public Integer getEndSize (Integer pageNum, Integer pageSize) {
		checkZero(pageSize);
		if (pageNum >= 1) {
			end = pageNum * pageSize;
		} else {
			end = 0;
		}
		return end;
	}
	
	
	public Integer checkZero(Integer pageSize) {
		if (pageSize == 0) {
			pageSize = 10;
		} 
		return pageSize;		
	}
	
//	private PageInfo (Integer pageSize, Integer pageNum, Integer total) {
//		this.pageSize = pageSize;
//		this.pageNum = pageNum;
//		this.total = total;
//	}

	public Integer getPageSize() {
		return pageSize;
	}

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

	public Integer getPageNum() {
		return pageNum;
	}

	public void setPageNum(Integer pageNum) {
		this.pageNum = pageNum;
	}

	public Integer getTotalSize() {
		return totalSize;
	}

	public void setTotal(Integer totalSize) {
		this.totalSize = totalSize;
	}
	
	public Integer getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(Integer totalPage) {
		this.totalPage = totalPage;
	}

	public void setTotalSize(Integer totalSize) {
		this.totalSize = totalSize;
	}

	public Integer getStart() {
		return start;
	}

	public void setStart(Integer start) {
		this.start = start;
	}

	public Integer getEnd() {
		return end;
	}

	public void setEnd(Integer end) {
		this.end = end;
	}
}

2.controller查询调用

@RequestMapping(value = "/list6")
@ResponseBody
public ReturnResult getPageInfo(@RequestParam(value = "pageNum") Integer pageNum,
		@RequestParam(value = "pageSize") Integer pageSize,
		@RequestParam(value = "orgId") Integer orgId) {
	PageInfo page = new PageInfo();
	page.setStart(page.getStartSize(pageNum, pageSize));
	//Oracle
	//page.setEnd(page.getEndSize(pageNum, pageSize));
	//Mysql
	page.setEnd(pageSize);
	Integer totalSize = 125;
	page.setTotalPage(page.getSumPage(totalSize, pageSize));
	List<Map> list = null;
	try {
		list = service.getPrgUserList2(orgId, page);
	} catch (Exception e) {
		log.info("Exception e :" + e);
		return ReturnResult.error(ReturnMsg.ERROR.getCode(), ReturnMsg.ERROR.getMsg());
	}
	log.info("OrgUser List :" + list);
	return ReturnResult.success(totalSize, page.getTotalPage(), list);
}

3.Dao层调用

@Override
public List<Map> getOrgUserList2(Integer orgId, PageInfo page) {
	Session session = this.factory.getCurrentSession();
	String sql = "SELECT o.user_id, o.org_id, o.user_loginname, o.user_loginpass, o.user_mobile FROM edugate_base.org_user o "
			+ "WHERE o.org_id = ? ORDER BY o.user_id DESC";
	Query query = session.createSQLQuery(sql);
	query.setInteger(0,orgId);
	query.setFirstResult(page.getStart());
	query.setMaxResults(page.getEnd());
	//query.setResultTransformer(Transformers.aliasToBean(OrgUser.class));
	//query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
	query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
	@SuppressWarnings("unchecked")
	List<Map> list = query.list();
	return list;
}

4.返回结果集:具体见 ReturnResult  totalPage没有在结果集,可自行添加

5.PostMan执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值