爪哇一角

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

          環(huán)境:? 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>?
          ?<!-- 查詢合同的計(jì)稅金額百分比-->
          ?<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>

          可以這樣分頁:
          /***************************************************************************
          ? * * 函數(shù)名: getPrealarm * 輸 入: conBeg,conEnd,taxDate,operatorStr,percent *
          ? * conBeg---合同起始時(shí)間 * conEnd---合同結(jié)束時(shí)間 * taxDate---計(jì)稅截止時(shí)間 * operatorStr---運(yùn)算符 *
          ? * percent---計(jì)稅占合同額百分比 * 輸 出: List * 功能描述: 得到計(jì)稅占合同額百分比 * 全局變量: * 調(diào)用模塊: * 作者:
          ? *?
          ? **************************************************************************/
          ?}
          ?/**分頁操作
          ???? * 使用hql 語句進(jìn)行操作
          ???? * @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;
          ??? }

          ??? /**
          ???? * 獲得記錄的總個(gè)數(shù)
          ???? */
          ??? public int getCountForPage(){
          ??? ?
          ??? ?List list = getHibernateTemplate().find(hql3);
          ??int count = ((Integer)list.get(0)).intValue();
          ???? return count;
          ??? }
          ??? /**
          ???? * 獲得分頁類的對象
          ???? * SimplePager(顯示內(nèi)容,記錄總個(gè)數(shù),頁面最大個(gè)數(shù),當(dāng)前頁)
          ???? */
          ??? 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()進(jìn)行分頁,具體如下:


          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 語句進(jìn)行操作
          ???? * @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;
          ??? }

          ??? /**
          ???? * 獲得記錄的總個(gè)數(shù)
          ???? */
          ??? public int getCountForPage(){
          ??? ?
          ??? ?List list = getHibernateTemplate().find(hql3);
          ??int count = ((Integer)list.get(0)).intValue();
          ???? return count;
          ??? }
          ??? /**
          ???? * 獲得分頁類的對象
          ???? * SimplePager(顯示內(nèi)容,記錄總個(gè)數(shù),頁面最大個(gè)數(shù),當(dāng)前頁)
          ???? */
          ??? 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;
          ??? }

          主站蜘蛛池模板: 乐清市| 天柱县| 耒阳市| 新疆| 麦盖提县| 开原市| 灵璧县| 开平市| 东台市| 米易县| 互助| 临清市| 即墨市| 隆德县| 宁阳县| 呈贡县| 宜君县| 中宁县| 金塔县| 肃北| 渭源县| 涞水县| 马尔康县| 大邑县| 宜春市| 安西县| 嵊泗县| 宣化县| 德保县| 四会市| 怀宁县| 西乌珠穆沁旗| 当雄县| 东山县| 华池县| 光泽县| 岳阳市| 馆陶县| 古田县| 安庆市| 永嘉县|