Hibernate也可以将查询的SQL语句写在配置文件里,避免硬编码下面是个例子:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="onlyfun.caterpillar.User" table="USER">
<id name="id" type="string">
<column name="user_id" sql-type="char(32)" />
<generator class="uuid.hex"/>
</id>
<property name="name" type="string" not-null="true">
<column name="name" length="16" not-null="true"/>
</property>
<property name="sex" type="char"/>
<property name="age" type="int"/>
</class>
<query name="onlyfun.caterpillar.queryUser">
<![CDATA[
select user.name from User as user where user.age = :age and user.sex = :sex
]]>
</query>
</hibernate-mapping>
在程序中引用<query>的name属性可以访问到sql:
Query query = session.getNamedQuery("onlyfun.caterpillar.queryUser");
query.setInteger("age", 25);
query.setCharacter("sex", 'M');
List names = query.list();
for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) {
String name = (String) iterator.next();
System.out.println("name: " + name);
}
本文介绍如何在Hibernate中通过配置文件定义SQL查询,避免硬编码带来的不便。示例展示了如何配置User类对应的表及字段,并通过<query>元素定义参数化的SQL查询语句。
276





