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 王永庆 阅读(225) 评论(0)  编辑  收藏 所属分类: HIBERNATE

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(1)

随笔分类

随笔档案

关注blogs

搜索

  •  

最新评论

阅读排行榜

评论排行榜