本人是职场新手,想用记录博客的方式给自己的学习之路做点笔记,若有不对还望指正!
分页操作
• Dao 层:
不带查询查询条件的分页,所以可以直接调用 PagingAndSortingRepository# findAll(Pageable pageable) 返回 Page 对象。
• Service 层:
– 没有业务逻辑
– 把 Controller 传入的 pageNo 和 pageSize 封装为 Pageable 对象。注意:Pageable 的 pageNo 是从 0 开始的
– 调用 Dao 层的方法即可。
• Controller 层:
– 获取 pageNo,并对 pageNo 进行校验
– 调用 Service 方法返回 Page 对象
– 把 Page 对象放入到 request 中
– 转发页面
JSP 页面:使用 JSTL 来显示页面Tips:传过来的pageNum用String形式接受,可以避免在传过来的pageNum不是常规数字的时候程序不至于死掉
@Transactional(readOnly=true)
public Page<Employee> getPage(int pageNo, int pageSize){
PageRequest pageable = new PageRequest(pageNo - 1, pageSize);
return employeeRepository.findAll(pageable);
}
@RequestMapping("/emps")
public String list(@RequestParam(value="pageNo", required=false, defaultValue="1") String pageNoStr,
Map<String, Object> map){
int pageNo = 1;
try {
//对 pageNo 的校验
pageNo = Integer.parseInt(pageNoStr);
if(pageNo < 1){
pageNo = 1;
}
} catch (Exception e) {}
Page<Employee> page = employeeService.getPage(pageNo, 5);
map.put("page", page);
return "emp/list";
}