java分页实现

来源:互联网 发布:域名定义 编辑:程序博客网 时间:2024/06/05 18:04
首先是dataobject,项目是用的是SpringMVC
public class MbChannelExtensionDO  {    private static final long serialVersionUID = 741231858441822688L;    //========== properties ==========/** * This property corresponds to db column <tt>ID</tt>. */private String id;/** * This property corresponds to db column <tt>BANK_NAME</tt>. */private String bankName;/** * This property corresponds to db column <tt>PRODUCT_TYPE</tt>. */private String productType;/** * This property corresponds to db column <tt>EXCHANGE_TYPE</tt>. */private String exchangeType;/** * This property corresponds to db column <tt>SIGN_VERIFY_ELE</tt>. */private String signVerifyEle;/** * This property corresponds to db column <tt>CHANNEL_ID</tt>. */private String channelId;/** * This property corresponds to db column <tt>GMT_CREATE</tt>. */private Date gmtCreate;/** * This property corresponds to db column <tt>CREATOR</tt>. */private String creator;/** * This property corresponds to db column <tt>GMT_MODIFIED</tt>. */private Date gmtModified;/** * This property corresponds to db column <tt>UPDATOR</tt>. */private String updator;/** * This property corresponds to db column <tt>STATUS</tt>. */private String status;    //========== getters and setters ==========    /**     * Getter method for property <tt>id</tt>.     *     * @return property value of id     */public String getId() {return id;}/** * Setter method for property <tt>id</tt>. *  * @param id value to be assigned to property id     */public void setId(String id) {this.id = id;}    /**     * Getter method for property <tt>BANK_NAME</tt>.     *     * @return property value of bankName     */public String getBankName() {return bankName;}/** * Setter method for property <tt>BANK_NAME</tt>. *  * @param bankName value to be assigned to property bankName     */public void setBankName(String bankName) {this.bankName = bankName;}    /**     * Getter method for property <tt>PRODUCT_TYPE</tt>.     *     * @return property value of productTYPE     */public String getProductType() {return productType;}/** * Setter method for property <tt>PRODUCT_TYPE</tt>. *  * @param productType value to be assigned to property productType     */public void setProductType(String productType) {this.productType = productType;}/** * Getter method for property <tt>SIGN_VERIFY_ELE</tt>. * * @return property value of signVerifyEle */public String getSignVerifyEle() {return signVerifyEle;}/** * Setter method for property <tt>SIGN_VERIFY_ELE</tt>. * * @param signVerifyEle value to be assigned to property signVerifyEle */public void setSignVerifyEle(String signVerifyEle) {this.signVerifyEle = signVerifyEle;}    /**     * Getter method for property <tt>EXCHANGE_TYPE</tt>.     *     * @return property value of signVerifyEle     */    public String getExchangeType() {        return exchangeType;    }    /**     * Setter method for property <tt>EXCHANGE_TYPE</tt>.     *     * @param exchangeType value to be assigned to property exchangeType     */    public void setExchangeType(String exchangeType ) { this.exchangeType = exchangeType;}    /**     * Getter method for property <tt>channelId</tt>.     *     * @return property value of channelId     */public String getChannelId() {return channelId;}/** * Setter method for property <tt>channelId</tt>. *  * @param channelId value to be assigned to property channelId     */public void setChannelId(String channelId) {this.channelId = channelId;}    /**     * Getter method for property <tt>gmtCreate</tt>.     *     * @return property value of gmtCreate     */public Date getGmtCreate() {return gmtCreate;}/** * Setter method for property <tt>gmtCreate</tt>. *  * @param gmtCreate value to be assigned to property gmtCreate     */public void setGmtCreate(Date gmtCreate) {this.gmtCreate = gmtCreate;}    /**     * Getter method for property <tt>creator</tt>.     *     * @return property value of creator     */public String getCreator() {return creator;}/** * Setter method for property <tt>creator</tt>. *  * @param creator value to be assigned to property creator     */public void setCreator(String creator) {this.creator = creator;}    /**     * Getter method for property <tt>gmtModified</tt>.     *     * @return property value of gmtModified     */public Date getGmtModified() {return gmtModified;}/** * Setter method for property <tt>gmtModified</tt>. *  * @param gmtModified value to be assigned to property gmtModified     */public void setGmtModified(Date gmtModified) {this.gmtModified = gmtModified;}    /**     * Getter method for property <tt>updator</tt>.     *     * @return property value of updator     */public String getUpdator() {return updator;}/** * Setter method for property <tt>updator</tt>. *  * @param updator value to be assigned to property updator     */public void setUpdator(String updator) {this.updator = updator;}    /**     * Getter method for property <tt>status</tt>.     *     * @return property value of status     */public String getStatus() {return status;}/** * Setter method for property <tt>status</tt>. *  * @param status value to be assigned to property status     */public void setStatus(String status) {this.status = status;}


接着是使用分页的Page类

public class PageDO {    /**     * 总条数     */    private int totalNumber;    /**     * 当前第几页     */    private int currentPage;    /**     * 总页数     */    private int totalPage;    /**     * 每页显示条数     */    private int pageNumber = 10;    /**     * 根据当前对象中属性值计算并设置相关属性值     */    public void count() {        // 计算总页数        int totalPageTemp = this.totalNumber / this.pageNumber;        int plus = (this.totalNumber % this.pageNumber) == 0 ? 0 : 1;        totalPageTemp = totalPageTemp + plus;        if(totalPageTemp <= 0) {            totalPageTemp = 1;        }        this.totalPage = totalPageTemp;        // 设置当前页数        // 总页数小于当前页数,应将当前页数设置为总页数        if(this.totalPage < this.currentPage) {            this.currentPage = this.totalPage;        }        // 当前页数小于1设置为1        if(this.currentPage < 1) {            this.currentPage = 1;        }    }    public int getTotalNumber() {        return totalNumber;    }    public void setTotalNumber(int totalNumber) {        this.totalNumber = totalNumber;        this.count();    }    public int getCurrentPage() {        return currentPage;    }    public void setCurrentPage(int currentPage) {        this.currentPage = currentPage;    }    public int getTotalPage() {        return totalPage;    }    public void setTotalPage(int totalPage) {        this.totalPage = totalPage;    }    public int getPageNumber() {        return pageNumber;    }    public void setPageNumber(int pageNumber) {        this.pageNumber = pageNumber;        this.count();    }}

DAO层实现分页的两个方法

 /**     *  select  <tt>MbChannelExtensionDO</tt> object by page to DB table <tt>MB_CHANNEL_EXTENSION</tt>, return primary key     *     *  <p>     *  The sql statement for this operation is <br>     *  <tt>select * from MB_CHANNEL_EXTENSION where id not in(select id from MB_CHANNEL_EXTENSION     *  where rownum<=(PAGESIZE*(CURRENTPAGE-1))) and rownum<=PAGESIZE order by id; </tt>     *     *@param page,mbChannelExtension     *@return List<MbChannelExtensionDO>     *@throws DataAccessException     */    @Override    public List<MbChannelExtensionDO> getMbChannelExtensionByPage(MbChannelExtensionDO mbChannelExtensionDO,PageDO page) throws DataAccessException {        if (page == null) {            throw new IllegalArgumentException("Can't select by a null page.");        }        Map map=new HashMap();        map.put("page",page);        map.put("mbChannelExtension",mbChannelExtensionDO);        return getSqlMapClientTemplate().queryForList("MS-MB-CHANNEL-EXTENSION-SELECT-BY-PAGE", map);    }    @Override    public int countOfMbChannelExtension(MbChannelExtensionDO mbChannelExtensionDO ) throws DataAccessException {        int count=(Integer)getSqlMapClientTemplate().queryForObject("MS-MB-CHANNEL-EXTENSION-COUNT",mbChannelExtensionDO);        return count;    }


以下是mybatis的mapping文件 
</pre><pre name="code" class="html" style="font-size: 11.8181819915771px;"><select id="MS-MB-CHANNEL-EXTENSION-SELECT-BY-PAGE" parameterClass="java.util.Map" resultMap="RM-MB-CHANNEL-EXTENSION">        select            *        from            MB_CHANNEL_EXTENSION        where            id        not in        (            select                id            from                MB_CHANNEL_EXTENSION            where 1=1                AND                rownum                  <![CDATA[ <=]]>                (                    #page.pageNumber#*(#page.currentPage#-1)                )        )        <dynamic>            <isNotEmpty prepend="AND" property="mbChannelExtension.bankName">                BANK_NAME=#mbChannelExtension.bankName#            </isNotEmpty>            <isNotEmpty prepend="AND" property="mbChannelExtension.productType">                PRODUCT_TYPE=#mbChannelExtension.productType#            </isNotEmpty>            <isNotEmpty prepend="AND" property="mbChannelExtension.exchangeType">                EXCHANGE_TYPE=#mbChannelExtension.exchangeType#            </isNotEmpty>        </dynamic>        and rownum        <![CDATA[ <=]]> #page.pageNumber#        order by            id    </select>    <select id="MS-MB-CHANNEL-EXTENSION-COUNT" resultClass="java.lang.Integer">        select count(ID)        from        MB_CHANNEL_EXTENSION        where 1=1        <dynamic>            <isNotEmpty prepend="AND" property="bankName">                BANK_NAME=#bankName#            </isNotEmpty>            <isNotEmpty prepend="AND" property="productType">                PRODUCT_TYPE=#productType#            </isNotEmpty>            <isNotEmpty prepend="AND" property="exchangeType">                EXCHANGE_TYPE=#exchangeType#            </isNotEmpty>        </dynamic><p>    </select></p><div></div>

以下是controller层

  @RequestMapping("/channlExtension")    public String selectCustomer(MbChannelExtensionDO customer,PageDO page,                                 HttpServletRequest request) {        if(page==null){            page=new PageDO();            page.setPageNumber(1);            page.count();        }        MbChannelExtensionDO channelExtension = new MbChannelExtensionDO();        channelExtension = customer;        page.setTotalNumber(channelExtensionService.countOfMbChannelExtension(customer));        this.tcustomerList  = this.channelExtensionService.getMbChannelExtensionByPage(customer,page);        request.setAttribute("tcustomerList", tcustomerList);        request.setAttribute("page",page);        request.setAttribute("channelExtension",channelExtension);        return "/channlExtension/channlExtension";    }

前端html和js
<form name ="frm" id="mainForm" method="post" action="<%=request.getContextPath()%>/channlExtension.html">            <div class='page fix' style="text-align: end;margin:5px 30px 20px 30px;">                共 <b>${page.totalNumber}</b> 条                <c:if test="${page.currentPage != 1}">                    <a href="javascript:changeCurrentPage('1')" class='first'>首页</a>                    <a href="javascript:changeCurrentPage('${page.currentPage-1}')" class='pre'>上一页</a>                </c:if>                当前第<span>${page.currentPage}/${page.totalPage}</span>页                <c:if test="${page.currentPage != page.totalPage}">                    <a href="javascript:changeCurrentPage('${page.currentPage+1}')" class='next'>下一页</a>                    <a href="javascript:changeCurrentPage('${page.totalPage}')" class='last'>末页</a>                </c:if>                跳至 <input id="currentPageText" name="currentPage" type='text' value='${page.currentPage}' class='allInput w28' /> 页                 <a href="javascript:changeCurrentPage($('#currentPageText').val())" class='go'>GO</a>            </div></form><script type="text/javascript">    function changeCurrentPage(currentPage) {        $("#currentPageText").val(currentPage);        $("#mainForm").submit();    }</script>

1 0
原创粉丝点击