论坛首页 Java企业应用论坛

Mysql 通用分页

浏览 11701 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (16) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-12-26  
GoodWell 写道
能做成像淘宝那样的分页不?????????????

恩,可以的!!!
0 请登录后投票
   发表时间:2011-12-26  
zhou405680603 写道
mysql不是可以直接使用limit分页吗,要这么麻烦吗

其实这个就是用limit做的,但是之所以要这么麻烦,是因为这个做成了通用的!只要随便传来一个javaBean就可以完成分页查询
0 请登录后投票
   发表时间:2011-12-26  
sanshizi 写道
/**
* 为了执行下一句要做什么配置,  有没有安全风险啊
*/
field[i].setAccessible(true) ;  




我才疏学浅,也不知道这么做会有什么风险,有知道的不妨一给说一说!!!
0 请登录后投票
   发表时间:2011-12-26  
一真在寻觅 关系型数据库的 通用分页方法。。。
0 请登录后投票
   发表时间:2011-12-26  
楼主 麻烦你打个压缩包附件传上来可以吗。。。
0 请登录后投票
   发表时间:2011-12-26  
看到Page类,总是联想起springside的Page类。
0 请登录后投票
   发表时间:2011-12-26  
还可以吧,不过还是有点bug的,配合上GUI就跟好了,
0 请登录后投票
   发表时间: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;
    }
}


0 请登录后投票
   发表时间:2011-12-27  
lz,可以再进行封转
0 请登录后投票
   发表时间:2012-01-10  
jyjava 写道
lz,可以再进行封转

楼主做得挺好的呀,我觉得很有内容,谢谢分享
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics