hibernate中Criteria查询
来源:互联网 发布:新兴重工查知的老婆 编辑:程序博客网 时间:2024/05/21 10:42
hibernate中Criteria查询
当查询数据时,人们往往需要设置查询条件。在SQL或HQL语句中,查询条件常常放在where子句中。此外,hibernate还支持Criteria查询(CriteriaQuery),这种查询方式把查询条件封装为一个Criteria对象。在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criteria的add()方法加入到Criteria实例中。这样,程序员可以不使用SQL甚至HQL的情况下进行数据查询,如例程9-1所示。
例程9-1 Criteria应用实例
------------------------------------------------------------------------------------------Criteria cr = session.createCriteria(Student.class); //生成一个Criteria对象cr.add(Restrictions.eq("name", "Bill"));//等价于where name=’Bill’List list = cr.list();Student stu = (Student)list.get(0);System.out.println(stu.getName());
1.常用的查询限制方法
在例程9-1中,Restrictions.eq()方法表示equal,即等于的情况。Restrictions类提供了查询限制机制。它提供了许多方法,以实现查询限制。这些方法及其他一些criteria常用查询限制方法列于表9-1中。
表9-1 Criteria Query常用的查询限制方法
方 法
说 明
Restrictions.eq()
equal,=
Restrictions.allEq()
参数为Map对象,使用key/value进行多个等于的对比,相当于多个Restrictions.eq()的效果
Restrictions.gt()
greater-than, >
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,否则返回false
Restrictions.isNotNull()
与Restrictions.isNull()相反
Order.asc()
根据传入的字段进行升序排序
Order.desc()
根据传入的字段进行降序排序
MatchMode.EXACT
字符串精确匹配,相当于“like 'value'”
MatchMode.ANYWHERE
字符串在中间位置,相当于“like '%value%'”
MatchMode.START
字符串在最前面的位置,相当于“like 'value%'”
MatchMode.END
字符串在最后面的位置,相当于“like '%value'”
例1:查询学生名字以t开头的所有Student对象。
Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.like(“name”, “t%”))List list = cr.list();Student stu = (Student)list.get(0);或者使用另一种方式:
Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.like(“name”, “t”, MatchMode.START))List list = cr.list();Student stu = (Student)list.get(0);例2:查询学生姓名在Bill, Jack和Tom之间的所有Student对象。
String[] names = {“Bill”, “Jack”, “Tom”}Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.in(“name”, names))List list = cr.list();Student stu = (Student)list.get(0);例3:查询学生的年龄age等于22或age为空(null)的所有Student对象。
Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.eq(“age”, new Integer(22));cr.add(Restrictions.isNull(“age”));List list = cr.list();Student stu = (Student)list.get(0);例4:查询学生姓名以字母F开头的所有Student对象,并按姓名升序排序。
Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.like(“name”, “F%”);cr.addOrder(Order.asc(“name”));List list = cr.list();Student stu = (Student)list.get(0);
调用Order.asc的方法应是Criteria的addOrder()方法。
2.连接限制
在Criteria 查询中使用FetchMode来实现连接限制。在HQL语句中,可以通过fetch关键字来表示预先抓取(Eager fetching),如下所示:
from Group gleft join fetch g.students swhere g.name like '%2005'可以使用Criteria的API完成同样的功能,如下所示:
Criteria cr = session.createCriteria(Group.class);cr.setFetchMode(“students”, FetchMode.EAGER);cr.add(Restrictions.like(“name”, “2005”, MatchMode.END))List list = cr.list();以上两种方式编写的代码,都使用相同的SQL语句完成它们的功能,如下所示:
select g.*, s.* from Group gleft outer join Student son g.id = s.group_idwhere g.name like '%2005'
- hibernate中criteria查询
- hibernate中Criteria查询
- Hibernate中Criteria的使用(条件查询)
- Hibernate中使用Criteria查询实例
- Hibernate中Criteria查询常用方法
- Hibernate Criteria 关联查询
- hibernate 动态查询 Criteria
- Hibernate 中的 Criteria 查询。
- Hibernate-Criteria 模糊查询
- Hibernate---Criteria 查询
- Hibernate-Criteria 模糊查询
- Hibernate Criteria 查询 详细参数
- hibernate --Criteria条件查询
- Hibernate-Criteria 模糊查询
- hibernate criteria查询
- Hibernate之 Criteria查询
- hibernate Example、Criteria 查询
- Hibernate Criteria 关联查询
- 字符串匹配算法KMP算法
- 词汇暴增,起点?
- 机器学习笔记:朴素贝叶斯
- C#异步编程和await/async
- java并发编程学习1--基础知识
- hibernate中Criteria查询
- Rails (栈)
- Lintcode 加油站
- bash: 一键修改 硬盘 权限和用户组
- 堆排序
- CSU-ACM2017暑期训练4-dfs G
- Linux基础命令学习
- 利用numpy和pandas处理csv文件中的时间2
- bzoj2561: 最小生成树