`

Hibernate HQL示例七:查询过滤器的使用

阅读更多

查询过滤器指的是:配置好后,会在该对象上的每一条查询语句上自动加上查询条件:

如:

<?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.bjsxt.hibernate.Student" table="t_student">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<property name="createTime"/>
		<many-to-one name="classes" column="classid"/>
		<filter name="idfilter" condition="id &lt; :myid"/>
	</class>
	<query name="searchStudents"><![CDATA[
		select s from Student s where s.id < ?
	]]>
	</query>
	<filter-def name="idfilter">
		<filter-param name="myid" type="integer"/>
	</filter-def>
</hibernate-mapping>

 

package com.bjsxt.hibernate;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Session;

import junit.framework.TestCase;

/**
 * 查询过滤器测试
 * @author Administrator
 *
 */
public class FilterQueryTest extends TestCase {
	
	public void testQuery1() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			
			session.enableFilter("idfilter")
			       .setParameter("myid", 10);
			
			List students = session.createQuery("from Student")
			.list();
			
			for (Iterator iter = students.iterator();iter.hasNext();) {
				
				Student student = (Student)iter.next();
				System.out.println(student.getName());
			}
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			HibernateUtils.closeSession(session);
		}	
	}
	
}

 

上述代码中只有from Student但执行的时候发出的语句是:

Hibernate: select student0_.id as id1_, student0_.name as name1_, student0_.createTime as createTime1_, student0_.classid as classid1_ from t_student student0_ where student0_.id < ?

 

过滤器在配置文件中的使用:

<filter name="idfilter" condition="id &lt; :myid"/>

 

	<filter-def name="idfilter">
		<filter-param name="myid" type="integer"/>
	</filter-def>

 

分享到:
评论

相关推荐

    HQL(Hibernate Query Language):

    Hibernate Query Language(HQL)是Hibernate框架中用于操作对象关系映射(ORM)的一种查询语言。它是面向对象的,设计目的是让开发人员可以使用对象而不是数据库表进行查询,从而简化了与数据库交互的过程。HQL的...

    精通hibernate HQL语言

    HQL,全称Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言,它的语法结构与SQL相似,但主要针对对象和实体进行操作,而不是直接操作数据库表。HQL是Hibernate官方推荐的检索数据的主要方式...

    Hibernate中HQL语句的使用[参考].pdf

    HQL语句可以使用查询过滤器来限制查询结果,例如: ```java &lt;filter name="testFilter" condition="id &lt; :myid"&gt; ``` 这条语句将查询Student实体类中的id小于某个值的记录,并返回结果集。 分页查询 HQL语句可以...

    HQL连接查询和注解使用总结

    ### HQL连接查询和注解使用总结 #### HQL连接查询概述 HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以一种更自然的方式查询对象,而不是直接查询底层数据库表。HQL支持多种连接查询...

    Hibernate 3.x过滤器的高级应用

    在Java的持久化框架Hibernate 3.x中,过滤器(Filter)是一种强大的工具,它允许开发者在不修改原有代码的情况下,动态地限制查询结果。过滤器的概念与数据库的视图类似,但提供了一种更抽象、更灵活的解决方案,...

    HQL语法大全,并带有详细的例子

    HQL(Hibernate Query Language)是一种面向对象的查询语言,被广泛应用于Hibernate框架中,用于执行数据持久化操作。与传统的SQL相比,HQL更加面向对象,支持诸如继承、多态等特性,这使得它在处理复杂的对象关系...

    hibernate3.6 文档(pdf 格式)

    - **Hibernate 过滤器**:介绍如何使用 Hibernate 过滤器来限制查询结果。 #### 二十、XML 映射 - **处理 XML 数据**:解释如何使用 Hibernate 映射 XML 数据。 - **XML 映射元数据**:介绍如何在 Hibernate 中定义...

    struts+hibernate示例

    6. **过滤器**:可能包括字符编码过滤器,防止XSS攻击等。 7. **ActionForm**:Struts中的表单类,用于接收和验证用户输入。 8. **DAO(Data Access Object)**:数据访问对象,作为业务逻辑层与持久化层之间的...

    Hibernate框架参考文档

    14. HQL: Hibernate查询语言; 15. 条件查询(Criteria Queries); 16. Native SQL查询; 17. 过滤数据; 18. XML映射; 19. 提升性能; 20. 工具箱指南; 21. 示例:父子关系(Parent Child Relationships); 22. 示例:...

    Hibernate In Action(Java.Persistence.with.Hibernate)源码

    5. **查询语言**:掌握使用HQL和Criteria API进行数据查询,包括简单的查询、分页、排序、条件过滤等。 6. **事务管理**:理解Transaction的使用,包括手动和自动提交事务,以及事务的隔离级别。 7. **JPA集成**:...

    Beginning Hibernate, 3rd Edition

    - **查询方式**:概述了 Hibernate 支持的各种查询方式,如 HQL、SQL 查询等。 - **分页查询**:介绍了如何利用 Hibernate 实现对结果集的分页查询。 #### 十一、使用 Criteria 进行高级查询 - **Criteria API**:...

    Hibernate学习.pdf

    - **示例**: 通过具体的代码示例学习如何使用Hibernate。 #### 21. 最佳实践 - **最佳实践**: 遵循一定的规则和建议,提高开发效率和代码质量。 综上所述,Hibernate作为一款优秀的ORM框架,不仅提供了强大的对象...

    hibernate3.6中文手册

    9. **其他高级特性**:涵盖了如查询缓存、事件监听器、过滤器、子查询等高级特性,帮助开发者深入挖掘Hibernate的潜力。 10. **实例分析**:手册通常会包含大量示例代码,通过实际应用场景的演示,帮助读者理解并...

    Hibernate教程

    18.1. Hibernate 过滤器(filters) 19. XML映射 19.1. 用XML数据进行工作 19.1.1. 指定同时映射XML和类 19.1.2. 只定义XML映射 19.2. XML映射元数据 19.3. 操作XML数据 20. 提升性能 20.1. 抓取策略(Fetching ...

    Hibernate+中文文档

    17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...

    最全Hibernate 参考文档

    17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...

    hibernate3.2中文文档(chm格式)

    17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...

Global site tag (gtag.js) - Google Analytics