2012-12-14 16:38 hibernate 实体映射文件中 写 hql/sql 语句

来源:互联网 发布:pyqt5 for windows 编辑:程序博客网 时间:2024/04/30 14:23

在使用Hibernate做开发时,可以直接在源代码里写 HQL/SQL,也可以利用hibernate 实体映射文件中写HQL/SQL

下面介绍在实体映射文件中写HQL/SQL

实体映射文件: user.hbm.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<hibernate-mapping>  
    <class name="org.tie.User" table="user" catalog="tie">  
        <id name="id" type="long">  
            <column name="id" />  
            <generator class="native" />  
        </id>  
        <property name="name" type="string">  
            <column name="name" length="45" not-null="true" />  
        </property>  
        <property name="age" type="integer">  
            <column name="age" not-null="true" />  
        </property>  
        <property name="addr" type="string">  
            <column name="addr" length="45" not-null="true" />  
        </property>  
    </class>  
    <!-- 这里将Hql语句写到配置文件当中,名字是可以随便取的 --> 
    <query name="getUserInfo">  
        from User where addr=:address and age=:age   
    </query>   
</hibernate-mapping>

hibernate配置文件:hibernate.cfg.xml

1
2
3
4
5
6
7
8
9
<xml version="1.0"?>
    <DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <mapping resource="User.hbm.xml"/>
    <session-factory>
<hibernate-configuration>

java代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*  
 * 另外Hibernate允许我们把 sql语句配置到文件中  
 * 因为写到程序中需要编译的,而写到配置文件中是不需要编译的   
 */ 
          
public void testHQL13(){   
    Session session = factory.openSession();   
    //这里通过getNameQuery这个方法来取得到配置文件中的hql语句   
    Query query = session.getNamedQuery("getUserInfo");   
    query.setString("address""Beijing");   
    query.setInteger("age"22);   
    List<User> users = query.list();   
    for(User user : users){   
        System.out.println(user.getName());   
        System.out.println("---------------");   
    }   
    session.close();   
}
0 0
原创粉丝点击