createCriteria的用法
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的用法相关推荐
- createCriteria用法
Session session= this.getSession(); List list=session.createCriteria(MeterUser.class).add(Restric ...
- Example类用法example.createCriteria
###逆向工程的Example类用法==注意:[没写example.createCriteria();执行selectByExample(example)表示:查询全部] qq_20597149 20 ...
- Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 ....
现在假设有一个Student类,内有id,name,age属性 String hql = "from Student s"; 按照以前的做法,我们通常是 Query query = ...
- (Mybatis)Example类用法example.createCriteria
=====####注意.example没加条件:没写example.createCriteria();执行查询:selectByExample(example).====就会查询全部. ======参 ...
- Hibernate 具体用法(自整理)
为什么80%的码农都做不了架构师?>>> 框架的概念是一个提供了可重用的公共结构的半成品 SSH是指:Struts 2 + Spring + Hibernate 框架的强大之处 ...
- hibernate中criteria的一些用法
最近在项目中使用 Spring 和 Hibernate 进行开发,有感于 Criteria 比较好用,在查询方法 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 ...
- 转:Hibernate中Criteria和DetachedCriteria的完整用法
原文地址:http://blog.sina.com.cn/s/blog_667528fd0100rkrf.html 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 H ...
- Hibernate - DetachedCriteria 的完整用法
2019独角兽企业重金招聘Python工程师标准>>> 现在对 Hibernate的Criteria 的用法进行总结: Hibernate 设计了 CriteriaSpeci ...
- java criteria and_criteria用法
Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象.简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如: Java代码 Criteria crite ...
最新文章
- linux基础面试题(46个汇总)
- 【Unity3D自学记录】判断物体是否在镜头内
- JSP中的forward指令
- mysql 索引及索引创建原则
- QT:QObject 简单介绍
- 从源码分析RocketMQ系列-Producer的invokeSync()方法
- html页面底部白条,用cookie解决新版微信中H5页面底部白条问题
- 网络游戏客户端服务器通信协议,有大神懂网络游戏通信协议么
- Oracle redo 日志切换时间频率
- Service Started!!!-end In Service while
- GO及其LiteIDE踩坑
- 汽车之家推荐系统排序算法迭代之路
- linux u盘启动系统教程视频教程,如何用u盘启动linux系统教程
- 软件架构设计---软件架构视图
- 前端在线预览PDF文件
- Linux面试相关知识点看着一文就够了
- Stack Overflow 上 250W 浏览量的一个问题:你对象丢了
- 配置小程序开发者工具及其使用(中)
- PostGIS 3.1.2软件安装详细教程(地图工具篇.8)
- [NOIP2013] 提高组 洛谷P1979 华容道
热门文章
- html文本框自动下拉列表,HTML input输入框实现的动态下拉列表选择
- PC端查看WiFi密码
- PHP include 和 include_once 的区别
- 认证模式之Digest模式
- CSS3视窗单位vw、vh、vmin、vmax说明
- 双边滤波原理(Bilateral Filtering)
- 自称很菜的二本大龄程序员居然拿到百度offer(百度面经)
- 离散数学(二):命题公式的等值演算
- 建建自学VoIP之VAD(Voice Activity Detector)和CNG(Comfort Noice Generator)
- sklearn 中的Ridge函数