有才華的人,別忘記給滋潤你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks

          在Hibernate3.0中廢除了find()方法,取而代之的是Query接口
          一、綁定參數(shù)
          1、使用“?”指定參數(shù)
          通過Query接口可以先設(shè)定查詢參數(shù),然后通過setXXX()等方法,將指定的參數(shù)值填入,而不用每次編寫完整的HQL。
           Query query = session.createQuery(“from Student s where s.age>? and s.name like ?”)
           query.setInteger(0,25);
           query.setString(1,”%clus%”);
                 ……………….
          2、使用“:“后跟變量的方法設(shè)置參數(shù)
          可以使用命名參數(shù)來取代“?“設(shè)置參數(shù)的方法,這可以不用來依照特定的順序來設(shè)定參數(shù)值,比如上面的示例代碼也可以寫為:
          Query query = session.createQuery(“from Student s where s.age>:minAge and s.name like :likeName”)
           query.setInteger(minAge,25);
           query.setString(likeName,”%clus%”);
          ………………..
          4、setEntity()方法
          setEntity()方法把參數(shù)與持久化類的示例綁定
          Team team = (Team)session.get(Team.class,”aaa565efc767”);
          Query query = session.createQuery(“from Student s where s.team>:team”)
          query. setEntity(“team”,team);
          …………………………..
          5、setParameter()方法
                setParameter()方法全稱是setParameter(String paraName,實例,實例類型),這個方法可以綁定任意類型的參數(shù)。如可把上面的改寫為:
                  query.setParameter(“team”,team,Hibernate.entity(Team.class)),其中,Hibernate.entity()指定映射的Hibernate 類型,也可以不要,如:
           query.setParameter(“team”,team)
          ……………..
          6、setPropertyies()方法
               setPropertyies()的全稱是setPropertyies(類實例)。它將類實例的屬性名與參數(shù)值相對應(yīng),如:
          Student   stu = new Student();
          Stu.setAge(99);
          Query query = session.createQuery(“from Student s where s.age=:age”);
           query.setProperties(stu);
          ……………….
          二、使用命名查詢
               可以將HQL語句寫在程序之外,以避免硬編碼在程序之中,需要的時候可以隨時更改,在*.hbm.xml中使用<query/>標(biāo)簽,并在<![CDATA[與]]>之間編寫HQL,編寫的位置是在</class>節(jié)點之后</hibername-mapping>節(jié)點之間。如:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-mapping PUBLIC
                    "-//Hibernate/Hibernate Mapping DTD//EN"
                    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
          <hibernate-mapping>
              <class name="com.kissjava.Student" table="student" lazy="true">
                 <id name="id" unsaved-value="null">
                     <generator class="uuid.hex"/>
                 </id>
                 <property name="name" type="string"/>
                 <property name="age" type="int"/>
              </class>
              <!-- 設(shè)置命名查詢 -->
              <query name="namedQueryAgeName"><!-- 此查詢被調(diào)用的名字 -->
                 <![CDATA[
                        from Student s where s.age>:minAge and s.name like:likeName
                     ]]>
              </query>
          </hibernate-mapping>
          <query>的name屬性用來設(shè)定查詢外部HQL時的名稱依據(jù),使用命名查詢的源碼如下:
          Query query = session.getNamedQuery(“namedQueryAgeName”)
           query.setInteger(minAge,25);
           query.setString(likeName,”%clus%”);
          ………………..
           

          posted on 2008-03-05 11:26 kissjava 閱讀(842) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 高密市| 临沧市| 新安县| 双牌县| 汤原县| 台东市| 连云港市| 哈巴河县| 霍山县| 沂源县| 池州市| 隆昌县| 冀州市| 军事| 长葛市| 社旗县| 云阳县| 黄梅县| 亳州市| 新巴尔虎右旗| 靖州| 璧山县| 绍兴县| 健康| 库尔勒市| 蒙自县| 南陵县| 工布江达县| 夹江县| 泰州市| 千阳县| 上饶市| 丘北县| 克东县| 梁山县| 桃园县| 通辽市| 郎溪县| 栾川县| 平顶山市| 长岭县|