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

Pagination 实体类:

/**

 * 分页实体类

 * @author: 张荣

 * @date: 2016322

 */

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<>();

      /** 部分getset方法省略 */

      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(urlpageView.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: 2016322

 */

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;

      /**getset方法省略**/

}

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

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

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

到此,分页插件实体类写完了!经过试验,该类具有极强的复用性,可实用于绝大多数情景!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值