乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Hibernate入門之Query界面

       WindySky 2007-07-15
      除了直接使用find()方法并配合HQL來進行查詢之外,我們還可以透過 net.sf.hibernate.Query接口的實例來進行查詢,透過Query接口,您可以先設(shè)定查詢參數(shù),之后透過setXXX()等方法,將指定的參數(shù)值填入,而不用每次都撰寫完整的HQL,直接來看個例子:
      Query query = session.createQuery("select user.name from User as user where user.age = ? and user.sex = ?");
      query.setInteger(0, 25);
      query.setCharacter(1, ‘M‘);

      List names = query.list();
      for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) {
      String name = (String) iterator.next();
      System.out.println("name: " + name);
      }
       在設(shè)定參數(shù)值時,必須依照 ? 所設(shè)定的順序,并使用對應型態(tài)的setXXX()方法,一個執(zhí)行的例子如下:

      log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
      log4j:WARN Please initialize the log4j system properly.
      Hibernate: select user0_.name as x0_0_ from USER user0_ where (user0_.age=? )and(user0_.sex=? )
      name: Bush
       您可以使用命名參數(shù)(Named Parameter)來取代這個方法,這可以不用依照特定的順序來設(shè)定參數(shù)值,并擁有較好的可讀性,直接來看個例子:
      Query query = session.createQuery("select user.name from User as user where user.age = :age and user.sex = :sex");
      query.setInteger("age", 25);
      query.setCharacter("sex", ‘M‘);

      List names = query.list();
      for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) {
      String name = (String) iterator.next();
      System.out.println("name: " + name);
      }
       設(shè)定命名參數(shù)時,在建立Query時先使用:后跟著參數(shù)名,之后我們就可以在setXXX()方法中直接指定參數(shù)名來設(shè)定參數(shù)值,而不用依照特定的順序。
       我們也可以將HQL撰寫在程序之外,以避免硬編碼(hard code)在程序之中,在需要修改HQL時就很方便,在*.hbm.xml中使用<query/>標簽,并在<![CDATA[與]] >之間撰寫HQL,撰寫的位置是在</hibernate-mapping>之前,例如:
      User.hbm.xml
      <?xml version="1.0"?>
      <!DOCTYPE hibernate-mapping
      PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
      "http://hibernate./hibernate-mapping-2.0.dtd">

      <hibernate-mapping>

      <class name="onlyfun.caterpillar.User" table="USER">

      <id name="id" type="string">
      <column name="user_id" sql-type="char(32)" />
      <generator class="uuid.hex"/>
      </id>

      <property name="name" type="string" not-null="true">
      <column name="name" length="16" not-null="true"/>
      </property>

      <property name="sex" type="char"/>

      <property name="age" type="int"/>

      </class>

      <query name="onlyfun.caterpillar.queryUser">
      <![CDATA[
      select user.name from User as user where user.age = :age and user.sex = :sex
      ]]>
      </query>

      </hibernate-mapping>
       <query>的name屬性用來設(shè)定查詢外部HQL時的名稱依據(jù),使用的例子如下:
      Query query = session.getNamedQuery("onlyfun.caterpillar.queryUser");
      query.setInteger("age", 25);
      query.setCharacter("sex", ‘M‘);

      List names = query.list();
      for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) {
      String name = (String) iterator.next();
      System.out.println("name: " + name);
      }
       更多有關(guān)于Hibernate查詢的操作,您可以查看參考手冊的第九章內(nèi)容。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多