hibernate criteria中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 null

Restrictions.isnull()

等于空值

is not null

Restrictions.isNotNull()

非空值

like

Restrictions.like()

字符串模式匹配

and

Restrictions.and()

逻辑与

and

Restrictions.conjunction()

逻辑与

or

Restrictions.or()

逻辑或

or

Restrictions.disjunction()

逻辑或

not

Restrictions.not()

逻辑非

in(列表)

Restrictions.in()

等于列表中的某一个值

not in(列表)

Restrictions.not(Restrictions.in())

不等于列表中任意一个值

between x and y

Restrictions.between()

闭区间xy中的任意值

not between x and y

Restrictions.not(Restrictions..between())

小于值X或者大于值


 

Java代码   收藏代码
  1. 例子  
  2. 查询年龄在20-30岁之间的所有学生对象  
  3. List list = session.createCriteria(Student.class)  
  4.       .add(Restrictions.between("age",new Integer(20),new Integer(30)).list();  
  5. 查询学生姓名在AAA,BBB,CCC之间的学生对象  
  6. String[] names = {"AAA","BBB","CCC"};  
  7. List list = session.createCriteria(Student.class)  
  8.       .add(Restrictions.in("name",names)).list();  
  9. 查询年龄为空的学生对象  
  10. List list = session.createCriteria(Student.class)  
  11.       .add(Restrictions.isNull("age")).list();  
  12. 查询年龄等于20或者年龄为空的学生对象  
  13. List list = session.createCriteria(Student.class)  
  14.       .add(Restrictions.or(Restrictions.eq("age",new Integer(20)),  
  15.                  Restrictions.isNull("age")).list();  
  16. --------------------------------------------------------------------  
  17. 使用QBC实现动态查询   
  18. public List findStudents(String name,int age){  
  19.  Criteria criteria = session.createCriteria(Student.class);  
  20.  if(name != null){  
  21.   criteria.add(Restrictions.liek("name",name,MatchMode.ANYWHERE));  
  22.  }  
  23.  if(age != 0){  
  24.   criteria.add(Restrictions.eq("age",new Integer(age)));  
  25.  }  
  26.  criteria.addOrder(Order.asc("name"));//根据名字升序排列  
  27.  return criteria.list();  
  28. }  
  29.    
  30. -----------------------------------------------------------------------------------  
  31. 今天用了写hibernate高级查询时用了Restrictions(当然Expression也是可以以的)这个类.感觉不错.  
  32. 下面的代码写的不易读.其实核心就是一句  
  33. Restrictions.or(Restrictions.like(),Restrictions.or(Restrictions.like,........))  
  34. 里面的or可以无限加的.还是比较好用  
  35.   
  36. Session session = getHibernateTemplate().getSessionFactory()  
  37.                 .openSession();  
  38.         Criteria criteria = session.createCriteria(Film.class);  
  39.         List<Film> list = criteria.add(  
  40.             Restrictions.or(Restrictions.like("description", key,MatchMode.ANYWHERE),  
  41.             Restrictions.or(Restrictions.like("name", key,MatchMode.ANYWHERE),  
  42.                 Restrictions.or(    Restrictions.like("direct", key,MatchMode.ANYWHERE),  
  43.                 Restrictions.or(Restrictions.like("mainplay",key,MatchMode.ANYWHERE),  
  44.                         Restrictions.like("filearea", key,MatchMode.ANYWHERE)))))).list();  
  45.   
  46.         session.close();  
  47.         return list; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值