您的位置:首页 > 编程语言 > Java开发

电商平台学习笔记(一)——Spring MVC+Mybatis分页插件

2016-04-03 08:17 477 查看
Pagination 实体类:

/*** 分页实体类* @author: 张荣* @date: 2016年3月22日*/public class Pagination implements Serializable { private static final long serialVersionUID = 1L; // 起始页号 private Integer pageNo; // 每页记录数目 private Integer pageSize; // 总的记录条数 private Integer totalSize; // 设置下方页面跳转的参数 private PageView pageView = new PageView(); // 设置每一页的点击链接 private List<String> page = new ArrayList<String>(); private List<?> list = new ArrayList<>(); /** 部分get和set方法省略 */ public Pagination(Integer pageNo, Integer pageSize, Integer totalSiz1e) { super(); this.setStartRow(pageNo); this.pageSize = pageSize; this.totalSize = totalSize; } public Pagination() { super(); } public static Integer cpn(Integer pageNo) {< 20000 /span> return pageNo != null && pageNo >= 1 ? pageNo : 1; } /** * 建立每一页的链接 * @param url:路径 */ public void setPageBar(String url) { pageView.setTotalPage(this.totalSize % this.pageSize == 0 ? (Integer) (this.totalSize / this.pageSize) : (Integer) (this.totalSize / this.pageSize) + 1); pageView.setFristPageUrl(urlCat(url,1)); pageView.setLastPageUrl(urlCat(url, pageView.getTotalPage())); // 判断是否有上一页 if (this.pageNo == 1) { pageView.setHasPre(false); pageView.setPrePageUrl(urlCat(url, 1)); } else { pageView.setHasPre(true); pageView.setPrePageNo(this.pageNo - 1); pageView.setPrePageUrl(urlCat(url, this.pageNo - 1)); } // 判断是否有下一页 if (pageView.getTotalPage() == this.pageNo) { pageView.setHasNext(false); pageView.setNextPageUrl(urlCat(url, pageView.getTotalPage())); } else { pageView.setHasNext(true); pageView.setNextPageNo(pageNo + 1); pageView.setNextPageUrl(urlCat(url, pageView.getNextPageNo())); } for (Integer i = 1; i <= pageView.getTotalPage(); i++) { StringBuffer sb = new StringBuffer(); if (i != pageNo) { sb.append("<a href=\"").append(urlCat(url, i)).append("\">").append(i).append("</a>"); } else { sb.append("<strong>").append(i).append("</strong>"); } page.add(sb.toString()); } } /** * 拼接字符串:拼接模板:url?name=参数1&isDisplay=参数2&pageNo=参数3 * @param pageNo * @return */ private String urlCat(String url, Integer pageNo) { StringBuffer sb = new StringBuffer(url).append("&pageNo=").append(pageNo); return sb.toString(); }}

分页工具条类PageView.java

/** * 分页下面的工具栏(页号等) * @author: 张荣 * @date: 2016年3月22日*/public class PageView implements Serializable{ private static final long serialVersionUID = 1L; //是否有上一页 private Boolean hasPre; //上一页的页号 private Integer prePageNo; //上一页的url private String prePageUrl = ""; //是否有下一页 private Boolean hasNext; //下一页页号 private Integer nextPageNo; //下一页的url private String nextPageUrl = ""; //首页url private String fristPageUrl = ""; //尾页url private String lastPageUrl=""; //总页数 private Integer totalPage; /**get和set方法省略**/}

Controller中设置页号(注意页号不得为空,初始化页号)!以及根据该ActionURL和附带参数来拼接下方工具栏每个按钮的url(setPageBar方法)!最后在前台用EL表达式取值展示!

其实可以进一步改进;可以将前台所有的URL全部封装在Pagination对象中一个List域中(定义一个List<String>变量存放前台所有的html代码),再在前台通过EL表达式forEach标签遍历显示!

为了提高该分页封装类的通用性!必然会有一个参数list,来储存需要展示的实体集合!我采用的是List<?> lst= new ArrayList<?>();而不要使用List<Object>lst = new ArrayList<Object>();因为前者才是可以接受所有list泛型的对象!

到此,分页插件实体类写完了!经过试验,该类具有极强的复用性,可实用于绝大多数情景!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: