QBC常用限定方法
Restrictions
.eq
--> equal,等于.
Restrictions
.ne
--> not equal,不等于.
Restrictions
.allEq
--> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions
.eq 的效果
Restrictions
.gt
--> great-than > 大于
Restrictions
.ge
--> great-equal >= 大于等于
Restrictions
.lt
--> less-than, < 小于
Restrictions
.le
--> less-equal <= 小于等于
Restrictions
.between
--> 对应SQL的between子句
Restrictions
.like
--> 对应SQL的LIKE子句
Restrictions
.in
--> 对应SQL的in子句
Restrictions
.and
--> and 关系
Restrictions
.or
--> or 关系
Restrictions
.isNull
--> 判断属性是否为空,为空则返回true
Restrictions
.isNotNull
--> 与isNull相反
Restrictions
.sqlRestriction
--> SQL限定的查询
Order.asc
--> 根据传入的字段进行升序排序
Order.desc
--> 根据传入的字段进行降序排序
MatchMode.EXACT
--> 字符串精确匹配.相当于"like 'value'"
MatchMode.ANYWHERE
--> 字符串在中间匹配.相当于"like '%value%'"
MatchMode.START
--> 字符串在最前面的位置.相当于"like 'value%'"
MatchMode.END
--> 字符串在最后面的位置.相当于"like '%value'"
例子
查询年龄在20-30岁之间的所有学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions
.between("age",new Integer(20),new Integer(30)).list();
查询学生姓名在AAA,BBB,CCC之间的学生对象
String[] names = {"AAA","BBB","CCC"};
List list = session.createCriteria(Student.class)
.add(Restrictions
.in("name",names)).list();
查询年龄为空的学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions
.isNull("age")).list();
查询年龄等于20或者年龄为空的学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions
.or(Restrictions
.eq("age",new Integer(20)),
Restrictions
.isNull("age")).list();
--------------------------------------------------------------------
使用QBC实现动态查询
public List findStudents(String name,int age){
Criteria criteria = session.createCriteria(Student.class);
if(name != null){
criteria.add(Restrictions
.liek("name",name,MatchMode.ANYWHERE));
}
if(age != 0){
criteria.add(Restrictions
.eq("age",new Integer(age)));
}
criteria.addOrder(Order.asc("name"));//根据名字升序排列
return criteria.list();
}
-----------------------------------------------------------------------------------
今天用了写hibernate
高级查询时用了Restrictions
(当然Expression也是可以以的)这个类.感觉不错.
下面的代码写的不易读.其实核心就是一句
Restrictions
.or(Restrictions
.like(),Restrictions
.or(Restrictions
.like,........))
里面的or可以无限加的.还是比较好用
Session session = getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria = session.createCriteria(Film.class);
List<Film> list = criteria.add(
Restrictions
.or(Restrictions
.like("description", key,MatchMode.ANYWHERE),
Restrictions
.or(Restrictions
.like("name", key,MatchMode.ANYWHERE),
Restrictions
.or(Restrictions
.like("direct", key,MatchMode.ANYWHERE),
Restrictions
.or(Restrictions
.like("mainplay",key,MatchMode.ANYWHERE),
Restrictions
.like("filearea", key,MatchMode.ANYWHERE)))))).list();
session.close();
return list;
分享到:
相关推荐
【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...
Hibernate是Java领域中一款强大的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在Java应用中,尤其是Spring框架与Hibernate结合使用时,能够实现更高效的业务...
Hibernate 的 Criteria 用法总结 Hibernate 的 Criteria 是一个完全面向对象、可扩展的条件查询 API,通过它完全不需要考虑数据库底层如何实现、SQL 语句如何实现。Criteria 提供了灵活的查询条件组装方式,能够...
在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...
这个“hibernate_first”压缩包提供了一个适合初学者的简单实例,帮助理解Hibernate的基础用法。以下是关于Hibernate入门的一些关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java类的过程,...
### Hibernate 使用详解 #### 一、配置与连接 在配置Hibernate的过程中,有几个关键点非常重要,这些设置...以上介绍了一些基本的配置项、核心概念和常用操作方法,希望能够帮助开发者更好地理解和使用Hibernate。
要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,你会这样做: ```java Criteria c = session.createCriteria...
9. **持久化代理**:Hibernate使用透明代理机制,当访问一个持久化对象时,如果该对象尚未加载,Hibernate会自动从数据库中获取。这提升了程序的灵活性,同时也降低了对内存的需求。 10. **多态性支持**:Hibernate...
2. `Restrictions.allEq`: 如果需要设置多个等于条件,可以使用`allEq`方法,它接受一个Map作为参数,Map的键是属性名,值是对应的比较值。例如,`allEq({"name": "John", "age": 25})`将匹配名字为John且年龄为25的...
《Hibernate 开发指南》是一本非常适合初学者学习 Hibernate 的书籍,它不仅详细介绍了 Hibernate 的基本概念和使用方法,还通过丰富的示例帮助读者快速上手。无论是对于刚接触 ORM 技术的新手,还是想要深入了解 ...
综上所述,`Restrictions`类提供了丰富的条件构造方法,使得在Hibernate中构建Criteria查询变得简单直观,同时也方便了对复杂查询逻辑的管理。通过熟练掌握这些方法,开发者可以更好地实现数据的筛选、排序和过滤。
总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...
本文将重点介绍QBC方法中的比较运算符及其具体用法,帮助读者更好地理解和运用这些运算符来实现复杂的查询需求。 #### 一、什么是QBC QBC是Hibernate框架提供的一个高级查询接口,允许开发者通过编程的方式构造...
### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...
### Hibernate3.x总结 #### 一、概述与配置 Hibernate 是一个开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 应用程序中的对象映射到数据库表及其字段上,从而简化了数据访问层的开发工作。本节主要介绍 ...
5. **多态查询的实现**:Hibernate支持使用`DetachedCriteria`或`Criteria` API来进行多态查询,通过`createCriteria()`方法指定父类,并使用`add(Restrictions.in("property", values))`等方法来限制查询条件。...
本文详细介绍了 Hibernate 提供的各种查询方式,包括 `load`、`get`、`createQuery` 和 `find` 等方法,并重点阐述了 HQL 查询的基本用法和高级技巧。通过本文的学习,读者可以掌握 Hibernate 的基本查询操作,并能...
此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List<Cat> cats = sess.createCriteria(Cat.class) .add...
使用 `Restrictions.or()` 方法组合多个条件: ```java Criterion crit1 = Restrictions.or(Restrictions.eq("name", "刘伟"), Restrictions.between("id", 100, 1000)); ``` 7. 原生 SQL 语句: 虽然不推荐,...
- 插入、更新、删除:使用Session的save(), update(), delete()方法操作对象状态。 5. **查询** - HQL:类似SQL,但操作的是对象,例如`from User where username='admin'`。 - Criteria API:动态构建查询条件...