<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 非洲小白臉 閱讀(417) 評論(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;
    ??? }

    主站蜘蛛池模板: 久久国产精品国产自线拍免费| 免费一级毛片在线播放放视频| 未满十八18禁止免费无码网站| 国产国拍精品亚洲AV片| caoporm碰最新免费公开视频| 亚洲精品无码永久在线观看| 国产亚洲精品2021自在线| 国产伦一区二区三区免费| 国产精品亚洲专区一区| 亚洲 综合 国产 欧洲 丝袜 | 亚洲人成网站18禁止一区| 水蜜桃视频在线观看免费| yy6080亚洲一级理论| 中文字幕a∨在线乱码免费看 | 亚洲国产成人乱码精品女人久久久不卡 | 97性无码区免费| 亚洲综合av一区二区三区| 日本一线a视频免费观看| 一级视频在线免费观看| 亚洲精品无码久久一线| **俄罗斯毛片免费| 亚洲欧美国产欧美色欲| 免费在线不卡视频| 免费黄网站在线观看| 亚洲国产模特在线播放| 永久黄网站色视频免费观看| 另类小说亚洲色图| 国产亚洲精品精华液| 国产1024精品视频专区免费| 亚洲精品久久久久无码AV片软件| 亚洲A丁香五香天堂网| 暖暖免费在线中文日本| 久久精品国产亚洲AV久| 亚洲精品成人区在线观看| 无码精品国产一区二区三区免费 | 激情内射亚洲一区二区三区| 色片在线免费观看| 丰满亚洲大尺度无码无码专线| 亚洲熟妇丰满多毛XXXX| 国产成人免费网站| 国产精品高清免费网站|