posts - 66,  comments - 11,  trackbacks - 0

              HQL作為Hibernate的查詢(xún)語(yǔ)言,提供了ANSI SQL面向?qū)ο蟮姆庋b形式。
              與Criteria和HQL互為補(bǔ)充,Hibernate也提供了對(duì)原生SQL以及存儲(chǔ)過(guò)程的支持,相對(duì)于JDBC的SQL操作,Hibernate提供了更為妥善的封裝。代碼如下:

          package com.testproject.hibernate;

          import java.util.Iterator;
          import java.util.List;

          import org.hibernate.Query;
          import org.hibernate.Session;

          public class HibernateSqlQuery {
              Session session 
          = null;
              
          public void querySql(){
                  String sql 
          = "select {usr.*} from T_User usr";
                  List list 
          = session.createSQLQuery(sql).addEntity("usr", TUser.class).list();
                  Iterator it 
          = list.iterator();
                  
          while(it.hasNext()){
                      TUser user 
          = (TUser)it.next();
                  }

              }

              
          public void queryMappingSql(){
                  Query query 
          = session.getNamedQuery("queryUser");
                  query.setParameter(
          "name","Erica");
                  Iterator it 
          = query.list().iterator();
                  
          while(it.hasNext()){
                      TUser user 
          = (TUser)it.next();
                  }

              }

          }

           

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >
          <hibernate-mapping>
              
          <class name="com.testproject.hibernate.TUser" table="T_USER">
                  
          <id name="id" column="id">
                      
          <generator class="native"></generator>
                  
          </id>
              
          </class>
              
          <sql-query name="queryUser">
                  
          <![CDATA[
                      select {usr.*} from T_User usr where name=:name
                  
          ]]>
                  
          <return alias = "usr" class="com.testproject.hibernate.TUser"></return>
              
          </sql-query>
              
          <!-- 基于存儲(chǔ)過(guò)程查詢(xún) sql-query節(jié)點(diǎn)的callable屬性設(shè)定為true,指明當(dāng)前查詢(xún)基于存儲(chǔ)過(guò)程定義-->
              
          <sql-query name="getUsersByAge" callable="true">
                  
          <return alias="user" class="com.testproject.hibernate.TUser">
                      
          <return-property name="id" column="ID"></return-property>
                      
          <return-property name="name" column="NAME"></return-property>
                      
          <return-property name="age" column="AGE"></return-property>
                  
          </return>
                  {?=call getUsersByAge(?)}
              
          </sql-query>
          </hibernate-mapping>






              與HQL相同,Native SQL也可以在實(shí)體映射文件中進(jìn)行配置:

          posted on 2009-11-21 21:37 王永慶 閱讀(248) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): HIBERNATE
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 甘南县| 武陟县| 紫阳县| 虹口区| 瓮安县| 吉安市| 连南| 辽中县| 沁阳市| 桂林市| 清镇市| 玛纳斯县| 四平市| 木兰县| 黔东| 麦盖提县| 白河县| 南漳县| 枣阳市| 公主岭市| 通化县| 清徐县| 安宁市| 微山县| 浦江县| 中阳县| 普格县| 元朗区| 永寿县| 廊坊市| 桃源县| 个旧市| 车致| 扶余县| 广宁县| 大姚县| 惠水县| 区。| 彰化市| 高雄县| 镇安县|