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执行