电商平台学习笔记(一)——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泛型的对象!
到此,分页插件实体类写完了!经过试验,该类具有极强的复用性,可实用于绝大多数情景!
实体类:
/** * 分页实体类 * @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泛型的对象!
到此,分页插件实体类写完了!经过试验,该类具有极强的复用性,可实用于绝大多数情景!
相关文章推荐
- more、less 和 most 的区别
- 十万条Access数据表分页的两个解决方法
- sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
- 高效的mysql分页方法及原理
- asp又一个分页的代码例子
- SqlServer 2000、2005分页存储过程整理第1/3页
- ADO存取数据库时如何分页显示
- 透彻掌握ASP分页技术很详细的分析
- 一条SQL语句搞定Sql2000 分页
- 分页 SQLServer存储过程
- 实现SQL分页的存储过程代码
- sql分页查询几种写法
- SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
- mysql 分页优化解析
- 用ODBC的分页显示
- jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
- 一步步打造漂亮的新闻列表(无刷新分页、内容预览)第一步
- asp.net利用后台实现直接生成html分页的方法
- asp.net中如何调用sql存储过程实现分页
- 浅谈基于SQL Server分页存储过程五种方法及性能比较