之前写过一篇博客 java分页的实现(后台工具类和前台jsp页面),介绍了分页的原理。
今天整合了Spring和SpringMVC和MyBatis,做了增删改查和分页,之前的逻辑都写在了Servlet里,
如今用了SSM框架,业务逻辑应该放在业务层(service),
这里有一个小问题:实现分页时,我们需要向页面中传两个参数:
- page对象(封装了页码,页容,总页数,总记录数,取得选择记录的初始位置)
- 集合对象(封装了bean类的信息)
也就是说,我们需要从service层获取到两个值,但是一个函数只有返回值(?),如何解决?
(1)第一种:写两个函数不就行了;
(2)第二种:添加引用;
(3)第三种:封装:
① 将 List 封装到 Page 中
② 新建一个类,封装 Page 和 List
个人认为,分开写比较好(3.2),
1、新建一个 LimitPageList 类
1 public class LimitPageList { 2 private Page page; 3 private List<?> list; 4 public Page getPage() { 5 return page; 6 } 7 public void setPage(Page page) { 8 this.page = page; 9 } 10 public List<?> getList() { 11 return list; 12 } 13 public void setList(List<?> list) { 14 this.list = list; 15 } 16 }
Page工具类
1 public class Page implements Serializable { 2 private static final long serialVersionUID = -3198048449643774660L; 3 4 private int pageNow = 1; // 当前页数 5 6 private int pageSize = 10; // 每页显示记录的条数 7 8 private int totalCount; // 总的记录条数 9 10 private int totalPageCount; // 总的页数 11 12 @SuppressWarnings("unused") 13 private int startPos; // 开始位置,从0开始 14 15 public Page(){} 16 17 //通过构造函数 传入 总记录数 和 当前页 18 public Page(int totalCount, int pageNow) { 19 this.totalCount = totalCount; 20 this.pageNow = pageNow; 21 } 22 23 //取得总页数,总页数=总记录数/每页显示记录的条数 24 public int getTotalPageCount() { 25 totalPageCount = getTotalCount() / getPageSize(); 26 return (totalCount % pageSize == 0) ? totalPageCount : totalPageCount + 1; 27 } 28 29 public void setTotalPageCount(int totalPageCount) { 30 this.totalPageCount = totalPageCount; 31 } 32 33 public int getPageNow() { 34 return pageNow; 35 } 36 37 public void setPageNow(int pageNow) { 38 this.pageNow = pageNow; 39 } 40 41 public int getPageSize() { 42 return pageSize; 43 } 44 45 public void setPageSize(int pageSize) { 46 this.pageSize = pageSize; 47 } 48 49 public int getTotalCount() { 50 return totalCount; 51 } 52 53 public void setTotalCount(int totalCount) { 54 this.totalCount = totalCount; 55 } 56 57 //取得选择记录的初始位置 58 public int getStartPos() { 59 return (pageNow - 1) * pageSize; 60 } 61 62 }