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

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

2016-04-03 08:17 351 查看
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) {           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.setPrePag
13ad4
eUrl(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泛型的对象!
到此,分页插件实体类写完了!经过试验,该类具有极强的复用性,可实用于绝大多数情景!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc mybatis 分页