hibernate Restrictions 用法 查询

本文介绍Hibernate框架中查询操作的实现方式,包括使用Restrictions和MatchMode进行条件筛选、使用Order进行排序等高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

import hibernate classes

 

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
DetachedCriteria criteria = DetachedCriteria.forClass(UserPO.class);
// 按照用户名排序 -- 升序
criteria.addOrder(Order.asc("userName"));
if (user != null) {
	// 按条件查询
	if (user.getUserName() != null && !user.getUserName().trim().equals("")) {
		criteria.add(Restrictions.like("userName", user.getUserName().trim(), MatchMode.ANYWHERE));
	}
}

getHibernateTemplate().findByCriteria(criteria ); // 返回LIST

 

Restrictions 的用法:

 

1、Restrictions

方法说明
Restrictions.eqequal 等于 ==
Restrictions.allEq参数为Map对象,使用key/value进行多个等于的对比,相当于多个Restrictions.eq的效果
Restrictions.gtgreat than 大于 >
Restrictions.gegreat equal 大于等于 >=
Restrictions.ltless than 小于 <
Restrictions.leless equal 小于等于 <=
Restrictions.between对应SQL的between子句
Restrictions.like对应SQL的like子句
Restrictions.in对应SQL的in子句
Restrictions.andand 关系
Restrictions.oror 关系
Restrictions.isNull判断属性是否为null,为空则返回true
Restrictions.sqlRestrictionSQL限定的查询


2、Order

 

 

Order.asc根据传入的字段进行升序排序
Order.desc                            降序

 

 

3、MatchMode

 

 

MatchMode.EXACT字符串精确匹配,相当于: like 'value'
MatchMode.ANYWHERE                   字符串在中间匹配 like '%value%'
MatchMode.START匹配前面 like 'value%'
MatchMode.ENDlike '%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();

 

or可以无限加

 

 

 

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值