`

hibernate动态条件高级查询criteria

阅读更多

我们知道,我们在做项目时候,用到的最多的无非就是查询,各种条件查询.这个时候,如果我们再采用纯粹的hql语句来通过if判断的话,效率就十分低下而且会有很多判断.

那么,hibernate在3以后,推出了一个很有意义的对象DetachedCriteria,通过这个类,我们可以得到Criteira对象.然后可以利用Restrictions,Projection等,构造各种条件.

而且支持多表连接,外键关联查询,忽略大小写等.很实用.

DetachedCriteria dc = DetachedCriteria.forClass(Employee.class);
		Criteria cri = dc.getExecutableCriteria(getSession());
		cri.createAlias("department", "department");
		if (currEmp.getRole().getRoleId() == FinalVariable.SIMPLE_RID) {
			cri.add(Restrictions.eq("empId", currEmp.getEmpId()));
		} else if (currEmp.getRole().getRoleId() == FinalVariable.DEP_MANAGER_RID) {
			if (emp != null) {
				if (emp.getEmpId() != null) {
					cri.add(Restrictions.eq("empId", emp.getEmpId()));
				}
			}
			cri.add(Restrictions.eq("department.depId", currEmp.getDepartment()
					.getDepId()));
		} else {
			if (emp != null) {
				if (emp.getEmpId() != null) {
					cri.add(Restrictions.eq("empId", emp.getEmpId()));
				} else if (emp.getDepartment().getDepId() != null) {
					cri.add(Restrictions.eq("department.depId", emp
							.getDepartment().getDepId()));
				}
			}
			cri.addOrder(Order.asc("department.depId"));
		}
		return cri.list();


下面贴上,我自己写的一个小例子:

其中,员工里面有个Department引用.这个时候如果我们想用department下面的depId,我们需要使用criteria的createAlias("","");方法,首先创建一个别名,这样就可以用外键去关联查询了,发送的sql语句都是关联的查询.很方便.

分享到:
评论

相关推荐

    Hibernate的高级查询

    无论是在HQL中编写复杂的查询语句,还是使用Criteria API和Criteria Builder构造动态查询,都能显著提高开发效率并减少错误。对于处理一对多、多对一等关联关系,Hibernate也提供了便捷的API,使得关联对象的存取变...

    Hibernate-Criteria 模糊查询

    ### Hibernate-Criteria 模糊查询详解 在Java的持久化技术中,Hibernate作为ORM(对象关系映射)框架的一种,提供了强大的数据访问能力。而其中的`Criteria`接口更是为复杂的查询需求提供了一种灵活且功能强大的...

    Hibernate-Criteria_模糊查询

    Criteria API基于面向对象的方式进行查询构建,可以动态地添加各种查询条件,包括等值比较、范围查询、模糊查询等,使得查询操作更加直观和易于管理。 ### 模糊查询的意义 模糊查询是数据库操作中常见的一种需求,...

    Hibernate中,利用Criteria查询容器实现sql的写法

    在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以对象化的方式构建SQL语句,而无需直接编写SQL代码。本篇将详细讲解如何在Hibernate中利用Criteria查询来实现类似SQL...

    Criteria hibernate

    Criteria API是Hibernate提供的一个高级查询接口,它允许开发者在运行时构建动态查询。Criteria查询是基于对象的,通过调用一系列方法来设置查询条件,这些条件在查询执行时被转化为对应的SQL语句。 2. **Criteria...

    Hibernate QBC高级查询.rar

    本资源“Hibernate QBC高级查询”聚焦于Hibernate Query by Criteria(QBC)的高级用法,旨在帮助开发者深入理解并熟练运用这一强大的查询机制。 Query by Criteria是Hibernate提供的另一种查询方式,与HQL...

    Hibernate 多表连接分页查询示范项目

    Criteria API 提供了一种类型安全的方式来构建动态查询。它允许开发者通过编程的方式创建查询,而不需要直接写 SQL。例如,可以创建一个 Criteria 对象,然后添加各种限制条件、排序和分组,最后执行查询。对于多表...

    hibernate中的查询方式

    Criteria API提供了一种更为灵活和强大的查询方式,它基于标准的Java对象模型来构建查询条件,支持动态创建查询条件。 **特点:** - **面向对象:** Criteria API完全基于对象,这使得它更加灵活和强大。 - **动态...

    Hibernate中关于Criteria查询条件的选择.doc

    在探讨Hibernate中关于Criteria查询条件的选择时,我们深入解析了Criteria接口如何被用来构建复杂的查询语句,以及各种表达式如何被运用到这些查询中。以下是对文档中提及的各个知识点的详细阐述: ### Criteria...

    通用的hibernate查询

    除了基础的查询,Hibernate还支持连接查询、子查询、聚合函数等高级功能。例如,如果你需要根据用户的年龄进行分组并计算每个年龄段的用户数量,可以这样写: ```java String hql = "select age, count(*) from ...

    hibernate查询方法

    Criteria API的优点在于代码可读性高,且支持动态构建查询条件。 ### 三、QBC(Query By Example) QBC是一种基于实例的查询方式,它允许你通过一个对象实例来定义查询条件。以下是一个使用QBC的例子: ```java ...

    数据分页以及高级查询

    高级查询允许用户根据多种条件进行复杂的数据筛选,包括但不限于按字段排序、模糊搜索、范围查询、多条件组合查询等。在Java中,我们可以使用JPA(Java Persistence API)或Hibernate等ORM框架来实现高级查询。例如...

    web高级查询+分页

    这些API允许开发者根据用户输入的条件动态构造SQL,从而实现动态查询。例如,可以基于用户选择的多个属性、范围条件或者组合条件进行过滤。 **Spring框架** Spring是Java企业级应用的全能框架,提供了依赖注入(DI...

    Hibernate中Criteria的完整用法

    1. **`Criteria`**:是Hibernate提供的一个接口,用于创建查询条件。它可以被看作是基于对象模型的SQL语句构建器。 2. **`Criterion`**:表示一个简单的查询条件,例如`age > 30`。 3. **`Restrictions`**:提供了一...

    Hibernate的高级操作

    2. **Criteria查询** 提供了一种面向对象的查询方式,通过API构建查询条件,无需书写字符串查询。它支持动态构建查询,更易于代码维护。例如,使用Criteria查询同样可以获取年龄大于20的用户: ```java Criteria ...

    Hibernate查询解决方案

    - **动态构建查询**:在实际开发中,经常需要根据不同的条件动态构建查询语句。可以通过字符串拼接或者使用 Criteria API 实现。 ```java Criteria criteria = session.createCriteria(User.class); if (name !=...

    Hibernate查询映射试验

    除了HQL,Hibernate还提供了Criteria API,这是一种更动态的查询方式,适合在运行时构建查询。Criteria API基于Java对象,可以避免字符串拼接造成的潜在SQL注入问题。以下是一个简单的例子: ```java Session ...

    hibernate结构化查询

    Criteria API 是 Hibernate 提供的一种高级查询接口,它允许开发者创建动态查询。在Hibernate中,`Criteria`对象代表了一个SQL查询的构建块,而`Expression`对象则用于构建查询条件。下面我们将详细介绍`Expression`...

    hibernate-Criteria

    通过上述介绍可以看出,Hibernate Criteria API提供了一种灵活且强大的查询方式,不仅可以进行复杂的条件查询,还可以进行聚合查询等高级操作。此外,`DetachedCriteria`的使用让查询更加灵活,适用于多种应用场景。...

    Hibernate中分页查询的封装。

    除了Criteria查询,还可以使用HQL(Hibernate Query Language)进行分页查询,HQL是Hibernate提供的面向对象的查询语言,语法类似SQL。以下是一个使用HQL分页查询的例子: ```java String hql = "from User"; Query...

Global site tag (gtag.js) - Google Analytics