2008-05-22

Hibernate的<query>标签使用

关键字: hibernate query

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); 
}

 

 

评论
kilavater 2008-07-21
hibernate中有没有像ibatis中<select>标签中用于拼接查询条件的字标签?
例如:
<select id="findOrganizationByQueryCondition" parameterClass="organization" resultMap="queryOrganizationResultList">
select
o.id as id,
o.name as name,
o.relation as relation,
ot.name as orgTypeName,
o.org_brief as org_brief
from organization o,organizationtype ot
where o.isdelete = '0'
and ot.typeid = o.org_type
<isNotNull prepend="AND" property="name">
o.name like '%$name$%'
</isNotNull>
<isNotNull prepend="AND" property="relation">
o.relation like '%$relation$%'
</isNotNull>
<isNotEqual prepend="AND" property="orgType" compareValue="0">
o.org_type=#orgType#
</isNotEqual>
</select>
中的isNotNull及isNotEqual标签等等???
发表评论

您还没有登录,请登录后发表评论