锁定老帖子 主题:Mysql 通用分页
精华帖 (0) :: 良好帖 (1) :: 新手帖 (16) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-26
GoodWell 写道 能做成像淘宝那样的分页不?????????????
恩,可以的!!! |
|
返回顶楼 | |
发表时间:2011-12-26
zhou405680603 写道 mysql不是可以直接使用limit分页吗,要这么麻烦吗
其实这个就是用limit做的,但是之所以要这么麻烦,是因为这个做成了通用的!只要随便传来一个javaBean就可以完成分页查询 |
|
返回顶楼 | |
发表时间:2011-12-26
sanshizi 写道 /** * 为了执行下一句要做什么配置, 有没有安全风险啊 */ field[i].setAccessible(true) ; 我才疏学浅,也不知道这么做会有什么风险,有知道的不妨一给说一说!!! |
|
返回顶楼 | |
发表时间:2011-12-26
一真在寻觅 关系型数据库的 通用分页方法。。。
|
|
返回顶楼 | |
发表时间:2011-12-26
楼主 麻烦你打个压缩包附件传上来可以吗。。。
|
|
返回顶楼 | |
发表时间:2011-12-26
看到Page类,总是联想起springside的Page类。
|
|
返回顶楼 | |
发表时间:2011-12-26
还可以吧,不过还是有点bug的,配合上GUI就跟好了,
|
|
返回顶楼 | |
发表时间:2011-12-27
GoodWell 写道 能做成像淘宝那样的分页不?????????????
给你淘宝的分页代码 /** * 查询分页类<br> * * @author sihu <a href="sihu@taobao.com">sihu</a> * @version $Id: QueryPage.java 2008-12-11 上午10:49:45 sihu */ public abstract class QueryPageDO extends BaseDO { /** * */ private static final long serialVersionUID = 2121379921916716454L; /** * SQL 排序 --- 倒序 */ public static final String QUERY_ORDER_DESC = "desc"; /** * SQL 排序 --- 顺序 */ public static final String QUERY_ORDER_ASC = "asc"; /** * 默认页码 */ private static final int DEFAULT_PAGE_NO = 1; /** * 最多每页显示记录数 */ private static final int MAX_PAGE_SIZE = 2000; /** * 默认每页显示记录数 */ private static final int DEFAULT_PAGE_SIZE = 20; private static final int DEFAULT_TOTAL_ITEM = 0; private Integer totalItem; private Integer pageSize; private Integer currentPage; // for paging private int startRow; private int endRow; /** * @return Returns the defaultPageSize. */ protected int getDefaultPageSize() { return DEFAULT_PAGE_SIZE; } public boolean isFirstPage() { return this.getCurrentPage() == 1; } public int getPreviousPage() { int back = this.getCurrentPage() - 1; if (back <= 0) { back = 1; } return back; } public boolean isLastPage() { return this.getTotalPage() == this.getCurrentPage(); } public int getNextPage() { int back = this.getCurrentPage() + 1; if (back > this.getTotalPage()) { back = this.getTotalPage(); } return back; } /** * @return Returns the currentPage. */ public int getCurrentPage() { if (currentPage == null) { return DEFAULT_PAGE_NO; } return currentPage; } /** * @param currentPage The currentPage to set. */ public void setCurrentPage(Integer cPage) { if ((cPage == null) || (cPage.intValue() <= 0)) { this.currentPage = null; } else { this.currentPage = cPage; } setStartEndRow(); } private void setStartEndRow() { // this.startRow = this.getPageSize().intValue() * (this.getCurrentPage() - 1) + 1; // this.endRow = this.startRow + this.getPageSize().intValue() - 1; this.startRow = this.getPageSize().intValue() * (this.getCurrentPage() - 1); //从0开始 this.endRow = this.startRow + this.getPageSize().intValue() - 1; } /** * @return Returns the pageSize. */ public Integer getPageSize() { if (pageSize == null) { return getDefaultPageSize(); } return pageSize; } public boolean hasSetPageSize() { return pageSize != null; } /** * @param pageSize The pageSize to set. */ public void setPageSize(Integer pSize) { if ((pSize == null) || (pSize.intValue() <= 0)) { this.pageSize = null; } else { if (pSize.intValue() > MAX_PAGE_SIZE) { this.pageSize = MAX_PAGE_SIZE; } else { this.pageSize = pSize; } } setStartEndRow(); } /** * @return Returns the totalItem. */ public int getTotalItem() { if (totalItem == null) { //throw new IllegalStateException("Please set the TotalItem // frist."); return DEFAULT_TOTAL_ITEM; } return totalItem; } /** * @param totalItem The totalItem to set. */ public void setTotalItem(Integer tItem) { if (tItem == null) { throw new IllegalArgumentException("TotalItem can't be null."); } this.totalItem = tItem; int current = this.getCurrentPage(); int lastPage = this.getTotalPage(); if (current > lastPage) { this.setCurrentPage(new Integer(lastPage)); } else { this.setCurrentPage(current); } } public int getTotalPage() { int pgSize = this.getPageSize().intValue(); int total = this.getTotalItem(); int result = total / pgSize; if ((total == 0) || ((total % pgSize) != 0)) { result++; } return result; } /** * @return */ public int getPageFirstItem() { int cPage = this.getCurrentPage(); if (cPage == 1) { return 1; // 第一页开始当然是第 1 条记录 } cPage--; int pgSize = this.getPageSize().intValue(); return (pgSize * cPage) + 1; } public int getPageLastItem() { int cPage = this.getCurrentPage(); int pgSize = this.getPageSize().intValue(); int assumeLast = pgSize * cPage; int totalItem = getTotalItem(); if (assumeLast > totalItem) { return totalItem; } else { return assumeLast; } } /** * @return Returns the endRow. */ public int getEndRow() { return endRow; } /** * @param endRow The endRow to set. */ public void setEndRow(int endRow) { this.endRow = endRow; } /** * @return Returns the startRow. */ public int getStartRow() { return startRow; } /** * @param startRow The startRow to set. */ public void setStartRow(int startRow) { this.startRow = startRow; } public String toString() { return ToStringBuilder.reflectionToString(this); } /** * 判断是否有下一页, 并且设置当前页码为下一页 * * @return boolean */ public boolean nextPage() { if (this.currentPage != null && this.currentPage.intValue() >= this.getTotalPage()) return false; if (this.currentPage == null) { this.setCurrentPage(DEFAULT_PAGE_NO); } else { this.setCurrentPage(getNextPage()); } return true; } } |
|
返回顶楼 | |
发表时间:2011-12-27
lz,可以再进行封转
|
|
返回顶楼 | |
发表时间:2012-01-10
jyjava 写道 lz,可以再进行封转 楼主做得挺好的呀,我觉得很有内容,谢谢分享 |
|
返回顶楼 | |