6、Hibernate的Restrictions对象、Criteria查询

4 篇文章 0 订阅
4 篇文章 0 订阅

一.Criteria简介

         Criteria是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如果和实现,以及SQL语句如何编写,它是Hibernate框架的核心查询对象。Criteria查询,又称QBC查(Queryby Criteria),它是Hibernate的另一个对象检索方式。
          org.hibernate.criterion.Criteria 是Hibernate提供的一个面向对象的查询接口条件接口,一个单独的查询就是Criteria接口的一个实例,用于限制Criteria对象的查询,在Hibernate中Criteria对象的
创建通常是由Restrictions工厂类来完成的,它提供了条件查询方法。

二.Criteria对象常用方法

  • list()方法:该方法用于返回多条查询结果
  • uniqueResult()方法:该方法用于返回唯一的结果,在确保只有一条记录的查询是可以使用该方法。
  • executeUpdate()方法:该方法是Hibernate3的新特性,它支持HQL语句的更新和删除操作。
  • setFirstResult()方法:该方法可以设置获取第一个记录的位置,也就是它表示从第几行记录开始查询,默认从0开始计算。
  • setMaxResult()方法:该方法用于设置结果集的最大记录,通常与setFirstRseult()方法结合使用,用于限制结果集的范围,以实现分页功能。

三.Criteria使用步骤

1、获取Hibernate的Session对象
2、通过Session对象获取Criteria。
3、使用Restrictions的静态方法创建Criterion条件对象,Restrictions类中提供了一系列的查询条件 方法,这些静态方法都返回Criterion实例,每个Criterion实例代表一个条件查询。
4、向Criteria对象中添加Criterion查询条件。Criteria的add()方法用于加入查询条件。
5、执行Criteria对象list()方法或uniqueResult()获得结果。
Restrictions 查询用法

HQL运算符QBC运算符含义
=Restrictions.eq()等于equal
<>Restrictions.ne()不等于not equal
>Restrictions.gt()大于greater than
>=Restrictions.ge()大于等于greater than or equal
<Restrictions.lt()小于less than
<=Restrictions.le()小于等于less than or equal
is nullRestrictions.isnull()等于空值
is not nullRestrictions.isNotNull()非空值
likeRestrictions.like()字符串模式匹配
orRestrictions.or()逻辑或
notRestrictions.not()逻辑非
in(列表)Restrictions.in()等于列表中的某一个值
not in(列表)Restrictions.not(Restrictions.in())不等于列表中任意一个值

条件查询:

//获取session对象
Session session = HibernateUtil.getCurrentSession();
//获取事务对象
Transaction tx = session.beginTransaction();
/*
* Session对象的createCriteria方法用于创建Criteria对象,
* 方法的参数为与表映射过的实体类
*/
Criteria criteria = session.createCriteria(Person.class);
/*
* Restrictions类用于设置查询条件
* criteria对象的add方法用于添加查询条件方法的参数为Restrictions类
*/
criteria.add(Restrictions.eq("name", "林某1"));
//执行查询
Person person = (Person) criteria.uniqueResult() 

分页查询:

//获取session对象
Session session = HibernateUtil.getCurrentSession();
//获取事务对象
Transaction tx = session.beginTransaction();
/*
*通过Session对象的createCriteria()方法来创建Criteria对象,
*createCriteria()方法里的里的参数为要查询的ORM实体类
*/
Criteria criteria = session.createCriteria(Person.class);
//设置起始查询索引
criteria.setFirstResult(0);
//设置结束索引
criteria.setMaxResults(3);
//执行查询
List<Person> list = criteria.list(); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值