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節(jié)點的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

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丹寨县| 鄄城县| 吉隆县| 盐津县| 安溪县| 浏阳市| 余庆县| 巴楚县| 黑水县| 大连市| 车致| 新丰县| 尼勒克县| 望都县| 陵水| 汶川县| 丹东市| 镇安县| 呼伦贝尔市| 呼和浩特市| 西昌市| 繁峙县| 宝应县| 墨玉县| 金秀| 鞍山市| 漳州市| 上高县| 郯城县| 云安县| 巫溪县| 黔西县| 上思县| 淅川县| 霍邱县| 兰溪市| 壶关县| 绿春县| 鲁山县| 太谷县| 北海市|