<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    關于在spring中hibernate的分頁問題

    Posted on 2006-09-19 17:19 非洲小白臉 閱讀(416) 評論(0)  編輯  收藏 所屬分類: 框架文章

    環境:? hibernate+spring


    1.如果sql語句寫在映射文件里,如下:
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "<!--
    ?Mapping file autogenerated by MyEclipse - Hibernate Tools
    -->
    <hibernate-mapping>
    ?<class name="com.jgcgov.model.Contract" table="CONTRACT" schema="JGCUSER">
    ??<id name="contractNo" type="string">
    ???<column name="CONTRACT_NO" length="11" />
    ???<generator class="assigned" />
    ??</id>
    ??............

    ??<set name="TbTaxpayment2104Add" table="TB_TAXPAYMENT_2104_ADD" cascade="all">
    ???<key column="CONTRACT_NO"></key>
    ???<one-to-many class="com.jgcgov.model.TbTaxpayment2104Add" />
    ??</set>
    ??
    ?</class>?
    ?<!-- 查詢合同的計稅金額百分比-->
    ?<sql-query name="contractPrealarm">
    ??<![CDATA[
    ???
    ???????? select con.CONTRACT_NO as contractNo,con.REGISTER_DATE as registerDate,
    ???????????? con.CONSTRUCT_UINT as constructUint,trunc(con.WORKLOAD*10000,2) as workload,
    ???????????? trunc(con1.TaxNum,2) as taxnum,trunc(con1.conPercent,1) as conPercent,
    ???????????? null as attribute7,null as attribute8,null as attribute9,null as attribute10
    ?????? from CONTRACT con,(
    ???????????? select con.CONTRACT_NO as contractNo,sum(nvl(tb2104.TAX_BASE,0)/(con.WORKLOAD*100)) as conPercent,
    ??????????????? sum(nvl(tb2104.TAX_BASE,0)) as TaxNum
    ???????????? from CONTRACT con ,Jgctax.TB_TAXPAYMENT_2104_ADD tb2104
    ??????????????? where con.REGISTER_DATE >= :conBeg
    ??????????????? and con.REGISTER_DATE <= :conEnd
    ??????????????? and con.CONTRACT_NO = tb2104.contract_No(+)
    ??????????????? and nvl(tb2104.OP_DATE,to_date('1900-01-01','yyyy-MM-dd')) <= :taxDate
    ??????????????? and nvl(con.WORKLOAD,0)<>0
    ??????????????? group by con.CONTRACT_NO
    ??????????????? having sum(nvl(tb2104.TAX_BASE,0)/(con.WORKLOAD*100)) >= :percent) con1
    ???????? where con.CONTRACT_NO=con1.contractNo
    ???? ]]>
    ??<return alias="con" class="com.jgcgov.model.HibernateSqlResult">
    ???<return-property name="attribute1" column="contractNo" />
    ???<return-property name="attribute2" column="registerDate" />
    ???<return-property name="attribute3" column="constructUint" />
    ???<return-property name="attribute4" column="workload" />
    ???<return-property name="attribute5" column="taxnum" />
    ???<return-property name="attribute6" column="conPercent" />
    ???<return-property name="attribute7" column="attribute7" />
    ???<return-property name="attribute8" column="attribute8" />
    ???<return-property name="attribute9" column="attribute9" />
    ???<return-property name="attribute10" column="attribute10" />

    ??</return>
    ?</sql-query>
    </hibernate-mapping>

    可以這樣分頁:
    /***************************************************************************
    ? * * 函數名: getPrealarm * 輸 入: conBeg,conEnd,taxDate,operatorStr,percent *
    ? * conBeg---合同起始時間 * conEnd---合同結束時間 * taxDate---計稅截止時間 * operatorStr---運算符 *
    ? * percent---計稅占合同額百分比 * 輸 出: List * 功能描述: 得到計稅占合同額百分比 * 全局變量: * 調用模塊: * 作者:
    ? *?
    ? **************************************************************************/
    ?}
    ?/**分頁操作
    ???? * 使用hql 語句進行操作
    ???? * @param offset
    ???? * @param length
    ???? * @return List
    ???? */
    ??? public List getListForPage(int offset,int length,Date conBeg, Date conEnd, Date taxDate,
    ???Float percent) {

    ??? final int offset3 = offset;
    ??? final int length3 = length;
    ??? final Date conBeg3 = conBeg;
    ??? final Date conEnd3 = conEnd;
    ??? final Date taxDate3 = taxDate;
    ??? final Float percent3 = percent;
    ???
    ???? List list = getHibernateTemplate().executeFind(new HibernateCallback() {
    ????? public Object doInHibernate(Session session)
    ??????? throws HibernateException, SQLException {
    ????????? Query query = session.getNamedQuery("contractPrealarm").setFirstResult(offset3).setMaxResults(length3);
    ????????? query.setDate(0,conBeg3);
    ????????? query.setDate(1,conEnd3);
    ????????? query.setDate(2,taxDate3);
    ????????? query.setFloat(4,percent3.floatValue());
    ?????????
    ????????? List list = query.list();
    ?????? return list;
    ????? }
    ???? });
    ???? return list;
    ??? }

    ??? /**
    ???? * 獲得記錄的總個數
    ???? */
    ??? public int getCountForPage(){
    ??? ?
    ??? ?List list = getHibernateTemplate().find(hql3);
    ??int count = ((Integer)list.get(0)).intValue();
    ???? return count;
    ??? }
    ??? /**
    ???? * 獲得分頁類的對象
    ???? * SimplePager(顯示內容,記錄總個數,頁面最大個數,當前頁)
    ???? */
    ??? public Pageable getPageable(int offset,int length,Date conBeg, Date conEnd, Date taxDate,
    ???Float percent,int currentPage){
    ??? ?final int offset1 = offset;
    ??? ?final int length1 = length;
    ??? ?final int currentPage1 = currentPage;
    ??? ?final int count = getCountForPage();
    ??? ?List list = getListForPage(int offset,int length,Date conBeg, Date conEnd, Date taxDate,
    ???Float percent);
    ??? ?Pageable pageable = new SimplePager(list,count,length1,currentPage1);
    ??? ?return pageable;
    ??? }


    2.直接寫在java類中,則可以用session的creatQuery()進行分頁,具體如下:


    private static String hql3 = "select count(*) from Jgcuser as user order by user.id ";
    ?
    ?private static String hql4 = "select u from Jgcuser as u order by u.id ";
    ?



    /**分頁操作
    ???? * 使用hql 語句進行操作
    ???? * @param offset
    ???? * @param length
    ???? * @return List
    ???? */
    ??? public List getListForPage(int offset,int length) {

    ??? final int offset3 = offset;
    ??? final int length3 = length;
    ???? List list = getHibernateTemplate().executeFind(new HibernateCallback() {
    ????? public Object doInHibernate(Session session)
    ??????? throws HibernateException, SQLException {
    ?????? List list = session.createQuery(hql4).setFirstResult(offset3).setMaxResults(length3).list();
    ?????? return list;
    ????? }
    ???? });
    ???? return list;
    ??? }

    ??? /**
    ???? * 獲得記錄的總個數
    ???? */
    ??? public int getCountForPage(){
    ??? ?
    ??? ?List list = getHibernateTemplate().find(hql3);
    ??int count = ((Integer)list.get(0)).intValue();
    ???? return count;
    ??? }
    ??? /**
    ???? * 獲得分頁類的對象
    ???? * SimplePager(顯示內容,記錄總個數,頁面最大個數,當前頁)
    ???? */
    ??? public Pageable getPageable(int offset,int length,int currentPage){
    ??? ?final int offset1 = offset;
    ??? ?final int length1 = length;
    ??? ?final int currentPage1 = currentPage;
    ??? ?final int count = getCountForPage();
    ??? ?List list = getListForPage(offset1,length1);
    ??? ?Pageable pageable = new SimplePager(list,count,length1,currentPage1);
    ??? ?return pageable;
    ??? }

    主站蜘蛛池模板: 免费视频成人片在线观看| 青青久久精品国产免费看| 秋霞人成在线观看免费视频 | 亚洲AV一区二区三区四区| 91在线视频免费播放| 亚洲丰满熟女一区二区v| 免费精品国偷自产在线在线 | 久久精品国产亚洲av麻| 成年美女黄网站色大免费视频| 18亚洲男同志videos网站| 9277手机在线视频观看免费| 免费看成人AA片无码视频羞羞网| 亚洲大片免费观看| 岛国av无码免费无禁网站| 亚洲国产精品99久久久久久| 国产成人高清精品免费软件 | 久久青青成人亚洲精品| 久久国产免费一区| 亚洲精品电影天堂网| 成人免费AA片在线观看| 亚洲精品9999久久久久无码| 亚洲av午夜精品一区二区三区 | 无遮挡免费一区二区三区| 国产亚洲美日韩AV中文字幕无码成人 | 日本19禁啪啪无遮挡免费动图| 色噜噜噜噜亚洲第一| 亚洲一区无码精品色| 三年片在线观看免费| 亚洲人成免费电影| 亚洲AⅤ优女AV综合久久久| 无码国产精品一区二区免费3p| 久久精品国产99国产精品亚洲| 少妇亚洲免费精品| 免费观看久久精彩视频| avtt天堂网手机版亚洲| 亚洲国产精品毛片av不卡在线| 久久久久国色av免费看| 亚洲综合av一区二区三区不卡 | 亚洲视频在线观看一区| 一级特黄录像免费播放中文版| 久热综合在线亚洲精品|