学习下Hibernate的Criteria

原文地址:http://xuganggogo.javaeye.com/blog/440078

  1. 方法说明

方法

说明

Restrictions.eq

Restrictions.allEq

利用Map来进行多个等于的限制

Restrictions.gt

Restrictions.ge

>=

Restrictions.lt

Restrictions.le

<=

Restrictions.between

BETWEEN

Restrictions.like

LIKE

Restrictions.in

in

Restrictions.and

and

Restrictions.or

or

Restrictions.sqlRestriction

用SQL限定查询

2,QBC常用限定方法

Restrictions.eq --> equal,等于.

Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq的效果

Restrictions.gt --> great-than > 大于

Restrictions.ge --> great-equal >= 大于等于

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

Restrictions.isNotNull --> 与isNull相反

Restrictions.sqlRestriction --> SQL限定的查询

Order.asc --> 根据传入的字段进行升序排序

Order.desc --> 根据传入的字段进行降序排序

MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'"

MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'"

MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'"

MatchMode.END --> 字符串在最后面的位置.相当于"like '%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();

--------------------------------------------------------------------
使用QBC实现动态查询 
public List findStudents(String name,int age){

Criteria criteria = session.createCriteria(Student.class);
 if(name != null){
  criteria.add(Restrictions.liek("name",name,MatchMode.ANYWHERE));
 }
 if(age != 0){
  criteria.add(Restrictions.eq("age",new Integer(age)));
 }
 criteria.addOrder(Order.asc("name"));//根据名字升序排列
 return criteria.list();
}

-----------------------------------------------------------------------------------

今天用了写hibernate高级查询时用了Restrictions(当然Expression也是可以以的)这个类.感觉不错.
下面的代码写的不易读.其实核心就是一句
Restrictions.or(Restrictions.like(),Restrictions.or(Restrictions.like,........))
里面的or可以无限加的.还是比较好用

Session session = getHibernateTemplate().getSessionFactory()
                .openSession();
        Criteria criteria = session.createCriteria(Film.class);
        List<Film> list = criteria.add(
            Restrictions.or(Restrictions.like("description", key,MatchMode.ANYWHERE),
            Restrictions.or(Restrictions.like("name", key,MatchMode.ANYWHERE),
                Restrictions.or(    Restrictions.like("direct", key,MatchMode.ANYWHERE),
                Restrictions.or(Restrictions.like("mainplay",key,MatchMode.ANYWHERE),
                        Restrictions.like("filearea", key,MatchMode.ANYWHERE)))))).list();

session.close();
        return list;

转载于:https://www.cnblogs.com/lhj588/archive/2012/10/19/2731213.html

hibernate Restrictions 用法相关推荐

  1. hibernate Restrictions 用法 查询

    import hibernate classes Java代码   import org.hibernate.criterion.DetachedCriteria; import org.hibern ...

  2. Hibernate 具体用法(自整理)

    为什么80%的码农都做不了架构师?>>>    框架的概念是一个提供了可重用的公共结构的半成品 SSH是指:Struts 2 + Spring + Hibernate 框架的强大之处 ...

  3. 《Java从入门到放弃》框架入门篇:hibernate基本用法

    昨天我们进行了hibernate的配置,并且进行了根据ID查询对应数据的操作,今天我们来看看hibernate中的几个配置文件,里面到底有什么东东. 一.hibernate.cfg.xml <h ...

  4. Hibernate查询用法总结

    1.主键查询的方法     User u = (User)session.get(User.class,1);     //支持懒加载     User u = (User)session.load( ...

  5. Hibernate Validator用法

    2019独角兽企业重金招聘Python工程师标准>>> 一.Hibernate ValiDator介绍 Bean Validation是JSR303的定义,Hibernate Val ...

  6. Restrictions的用法

    1.Restrictions用法 HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <>  Restrictions.ne() 不等于not equ ...

  7. Hibernate 马士兵 学习笔记

    1.  HelloWorld a)        Xml b)        Annotction 2.  Hibernate原理模拟-什么是O/RMapping以及为什么要有O/RMapping 3 ...

  8. Hibernate学习大全

    第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHelloWorld 7 第7课 ...

  9. Hibernate 学习教程

    第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHelloWorld 7 第7课 ...

  10. Spring MVC + Hibernate + Maven:CRUD操作示例

    在本文中,我想研究一个Spring MVC + Hibernate + Maven用法的示例. 这套技术暗含领域领域的基础知识. 因此,我将尝试详细解释所有重要时刻. 其他没有主题的内容将提供指向更多 ...

最新文章

  1. python银行开户_Python数据挖掘与Stata应用实证寒假工作坊
  2. java中break,continue,標籤實現goto效果(編程思想)
  3. 数据中心背后的地缘政治学
  4. Four ugliness
  5. orika java_Orika JavaBean映射工具探秘
  6. Silverlight4Beta之CompositeTransform
  7. ASP.NET Core MVC – Tag Helper 组件
  8. 1 D触发器verilog与Systemverilog编码
  9. Github开源之旅启程:GitHub 上部署网页
  10. 一文看懂测试自动化的玄妙
  11. 美哭了,一款面向程序员的开源 Markdown 笔记工具!
  12. 不想使用Windows自带远程桌面客户端的另外一种选择
  13. 怎样在电脑上设置路由器的WiFi密码
  14. 京东订单自动评价方法
  15. 英语论文应该怎么查重?
  16. 如何用WikiExtractor提取维基百科词汇
  17. Linux VPS 免费管理面板推荐
  18. java毫秒_JAVA中怎么获取毫秒和微秒数
  19. can not be named yunan because its located directly under the workspace root
  20. 主码、候选码与外码的区别

热门文章

  1. 程序跳转到访问一个确定的地址0x100000
  2. WCF读书笔记(1)
  3. 如何理解Spring中的IOC和AOP
  4. 【详细】遍历Windows文件
  5. 查看各浏览器各版本的兼容情况
  6. 最新图解 github 修改github地址 用户名
  7. 07网络发展趋势:风险和机遇并存
  8. Vmware 6.5.1正式版在Ubuntu 8.10下面运行非常缓慢的解决方
  9. http各类攻击及tcpcopy工具
  10. Windows下ant环境搭建