posts - 66,  comments - 11,  trackbacks - 0

              HQL作為Hibernate的查詢語言,提供了ANSI SQL面向對象的封裝形式。
              與Criteria和HQL互為補充,Hibernate也提供了對原生SQL以及存儲過程的支持,相對于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>
              
          <!-- 基于存儲過程查詢 sql-query節點的callable屬性設定為true,指明當前查詢基于存儲過程定義-->
              
          <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也可以在實體映射文件中進行配置:

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

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關注blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 图片| 禄丰县| 广丰县| 宝丰县| 永康市| 新民市| 通州市| 潼关县| 裕民县| 陕西省| 宁武县| 永清县| 古交市| 长宁县| 上杭县| 奇台县| 平远县| 舒兰市| 汨罗市| 伊宁市| 莲花县| 防城港市| 弋阳县| 台南市| 姜堰市| 万州区| 柏乡县| 梅河口市| 文化| 界首市| 泗水县| 汉寿县| 丹江口市| 噶尔县| 江油市| 长沙市| 肥东县| 兴宁市| 会昌县| 利津县| 大安市|