hibernate criteria中Restrictions的用法

来源:互联网 发布:胸痛数据填报 编辑:程序博客网 时间:2024/06/05 04:06

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
原创粉丝点击