createCriteria的用法

现在假设有一个Student类,内有id,name,age属性
String hql = “from Student s” ;
按照以前的做法,我们通常是
Query query = session.createQuery(hql);
或者要按照条件检索的话.
String hql = “from Student s where s.name like ‘王%’”
Query query = session.createQuery(hql);
不用HQL而使用QBC的话,那么代码为:
Criteria criteria =session.createCriteria(Student. class );
Criterion criterion = Expression.like( “name” , “王%” );
这样还看不出来.那我们把检索条件加上年龄为22.
HQL:
String hql = "from Student s where s.name like ‘王%’ and s.age= 22 " ;
Query query = session.createQuery(hql);
List list = query.list();
QBC:
Criteria criteria =session.createCriteria(Student. class );
Criterion criterion1 = Expression.like( “name” , “王%” );
Criterion criterion2 = Expression.eq( “age” ,newInteger(22));
criteria.add(criterion1).add(criterion2);
List list = criteria.list();

看上去烦琐很多.但是做过项目的人都知道,当一个模块业务逻辑发生改变的时候,往往要重写sql,最烦也是最讨厌的就是拿着别人的hql或者sql,两眼瞪的溜园找到底要修改什么地方呢?
如果使用QBC大大的增加了代码的可读性,以及可维护性.
需要注意的是 null 值
比如我们要查找姓名为 null 的Student对象时应该这么写
Criteria criteria =session.createCriteria(Student. class );
Criterion criterion = Expression.isNull( “name” );
criteria.add(criterion).list();
以及使用between…and的时候
Criteria criteria =session.createCriteria(Student. class );
Criterion criterion1 = Expression.ge( “age” , new Integer(20)); //下限
Criterion criterion2 = Expression.le( “age” , new Integer(25)); //上限
//这里也可以把上述两个条件添加到第三个条件里
Criterion criterion3 =Expression.and(criterion1,criterion2);
criteria.add(criterion3).list();
相当于from Student s where s.age between 20 and 25
等同于from Student s where s.age >= 20 and s.age <=25

下面是就HQL和QBC常用的查询条件做的比较
表达式含义 HQL QBC
大于等于 >= Expression.ge()
大于 > Expression.gt()
小于等于 <= Expression.le()
小于 < Expression.lt()
等于 = Expression.eq()
不等于 <>或者!= Expression.ne()

为空 is null Expression.isNull()
不为空 is notnull Expression.isNotNull()
在指定范围内 betweenand Expression.between()
不在指定范围 not betweenand Expression.not(Expression.between())
属于某个集合 in Expression.in()
不属于某个集合 notin Expression.not(Expression.in())
与 and Expression.and()
或 or Expression.or()
非 not Expression.not()
模糊在这里插入图片描述
查询 like Expression.like

createCriteria的用法相关推荐

  1. createCriteria用法

    Session session=  this.getSession();   List list=session.createCriteria(MeterUser.class).add(Restric ...

  2. Example类用法example.createCriteria

    ###逆向工程的Example类用法==注意:[没写example.createCriteria();执行selectByExample(example)表示:查询全部] qq_20597149 20 ...

  3. Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 ....

    现在假设有一个Student类,内有id,name,age属性 String hql = "from Student s"; 按照以前的做法,我们通常是 Query query = ...

  4. (Mybatis)Example类用法example.createCriteria

    =====####注意.example没加条件:没写example.createCriteria();执行查询:selectByExample(example).====就会查询全部. ======参 ...

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

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

  6. hibernate中criteria的一些用法

    最近在项目中使用 Spring 和 Hibernate 进行开发,有感于 Criteria 比较好用,在查询方法 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 ...

  7. 转:Hibernate中Criteria和DetachedCriteria的完整用法

    原文地址:http://blog.sina.com.cn/s/blog_667528fd0100rkrf.html 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 H ...

  8. Hibernate - DetachedCriteria 的完整用法

    2019独角兽企业重金招聘Python工程师标准>>> 现在对 Hibernate的Criteria 的用法进行总结:     Hibernate 设计了 CriteriaSpeci ...

  9. java criteria and_criteria用法

    Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象.简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如: Java代码 Criteria crite ...

最新文章

  1. linux基础面试题(46个汇总)
  2. 【Unity3D自学记录】判断物体是否在镜头内
  3. JSP中的forward指令
  4. mysql 索引及索引创建原则
  5. QT:QObject 简单介绍
  6. 从源码分析RocketMQ系列-Producer的invokeSync()方法
  7. html页面底部白条,用cookie解决新版微信中H5页面底部白条问题
  8. 网络游戏客户端服务器通信协议,有大神懂网络游戏通信协议么
  9. Oracle redo 日志切换时间频率
  10. Service Started!!!-end In Service while
  11. GO及其LiteIDE踩坑
  12. 汽车之家推荐系统排序算法迭代之路
  13. linux u盘启动系统教程视频教程,如何用u盘启动linux系统教程
  14. 软件架构设计---软件架构视图
  15. 前端在线预览PDF文件
  16. Linux面试相关知识点看着一文就够了
  17. Stack Overflow 上 250W 浏览量的一个问题:你对象丢了
  18. 配置小程序开发者工具及其使用(中)
  19. PostGIS 3.1.2软件安装详细教程(地图工具篇.8)
  20. [NOIP2013] 提高组 洛谷P1979 华容道

热门文章

  1. html文本框自动下拉列表,HTML input输入框实现的动态下拉列表选择
  2. PC端查看WiFi密码
  3. PHP include 和 include_once 的区别
  4. 认证模式之Digest模式
  5. CSS3视窗单位vw、vh、vmin、vmax说明
  6. 双边滤波原理(Bilateral Filtering)
  7. 自称很菜的二本大龄程序员居然拿到百度offer(百度面经)
  8. 离散数学(二):命题公式的等值演算
  9. 建建自学VoIP之VAD(Voice Activity Detector)和CNG(Comfort Noice Generator)
  10. sklearn 中的Ridge函数