java criteria and_criteria用法
Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:
Java代码
Criteria criteria = session.createCriteria(User.class);
criteria.add(Expression.eq("name","Erica"));
criteria.add(Expression.eq("sex",new Integer(1)));
Criteria 查询表达式
Criteria 本身只是一个查询容器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。 如前例所示,Expression 对象具体描述了查询条件。针对SQL 语法,Expression提供了对应的查询限定机制,包括:
Java代码
Expression.eq 对应SQL“field = value”表达式。 如Expression.eq("name","Erica")
Expression.allEq 参数为一个Map对象,其中包含了多个属性-值对应关系。相当于多个Expression.eq关系的叠加。
Expression.gt 对应SQL中的 “field > value ” 表达式
Expression.ge 对应SQL中的 “field >= value” 表达式
Expression.lt 对应SQL中的 “field < value” 表达式
Expression.le 对应SQL中的 “field <= value” 表达式
Expression.between 对应SQL中的 “between” 表达式
如下面的表达式表示年龄(age)位于13到50区间内。
Java代码
Expression.between("age",new Integer(13),new Integer(50));
表达式
Java代码
Expression.in 对应SQL中的 ”field in …” 表达式
Expression.eqProperty 用于比较两个属性之间的值,对应SQL中的“field = field”。 如:
Expression.eqProperty( "TUser.groupID", "TGroup.id" );
Expression.gtProperty 用于比较两个属性之间的值,对应SQL中的“field > field”。
Expression.geProperty 用于比较两个属性之间的值,对应SQL中的“field >= field”。
Expression.ltProperty 用于比较两个属性之间的值,对应SQL中的“field < field”。
Expression.leProperty 用于比较两个属性之间的值,对应SQL中的“field <= field”。
Expression.and and关系组合。 如:
Expression.and( Expression.eq("name","Erica"), Expression.eq( "sex", new Integer(1) ) );
Expression.or or关系组合。 如:
Expression.or( Expression.eq("name","Erica"), Expression.eq("name","Emma") );
Expression.sql 作为补充,本方法提供了原生SQL语法的支持。我们可以通过这个方法直接通过SQL语句限定查询条件。 下面的代码返回所有名称以“Erica”起始的记录:
Java代码
Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );
Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );
其中的“{alias}”将由Hibernate在运行期使用当前关联的POJO别名替换。 注意Expression 各方法中的属性名参数(如Express.eq中的第一个参数),这里 所谓属性名是POJO中对应实际库表字段的属性名(大小写敏感),而非库表中的实际字段名称。
Criteria 高级特性
限定返回的记录范围
通过criteria. setFirstResult/setMaxResults 方法可以限制一次查询返回的记录范围:
Java代码
Criteria criteria = session.createCriteria(TUser.class);
//限定查询返回检索结果中,从第一百条结果开始的20条记录
criteria.setFirstResult(100);
criteria.setMaxResults(20);
对查询结果进行排序
//查询所有groupId=2的记录
//并分别按照姓名(顺序)和groupId(逆序)排序
Criteria criteria = session.createCriteria(TUser.class);
criteria.add(Expression.eq("groupId",new Integer(2)));
criteria.addOrder(Order.asc("name"));
criteria.addOrder(Order.desc("groupId"));
Criteria criteria = session.createCriteria(TUser.class);
//限定查询返回检索结果中,从第一百条结果开始的20条记录
criteria.setFirstResult(100);
criteria.setMaxResults(20);
对查询结果进行排序
//查询所有groupId=2的记录
//并分别按照姓名(顺序)和groupId(逆序)排序
Criteria criteria = session.createCriteria(TUser.class);
criteria.add(Expression.eq("groupId",new Integer(2)));
criteria.addOrder(Order.asc("name"));
criteria.addOrder(Order.desc("groupId"));
分享到:
2009-06-01 09:20
浏览 7961
评论
2 楼
senhui19
2010-11-12
嗯,写的不错,收藏起来方便以后查看,呵呵~~
1 楼
hanz188
2010-07-30
楼主总结的真好,我看完之后基本上就了解了criteria的概念和用法了。如果页面能够重新排下版就更好了,另外,最后一段代码重复了,能不能删除一个。
java criteria and_criteria用法相关推荐
- java criteria and_Criteria 笔记
来自:徽骆驼 Criteria Query 可以看作传统sql的对象化表示 Criteria 可以由session创建 Criteria ct= session.createCriteria(TUse ...
- 四种Java线程池用法解析
四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...
- 2020-12-17 【 java优先队列的用法】
java优先队列的用法 peek是top() 只取最上面的元素 poll是pop() 弹出 add是添加 push 类的比较器,相对于仿函数 struct cmp{ bool operator ()( ...
- java中import用法
java中import用法 单类型导入(single-type-import),例如import java.io.File; 按需类型导入(type-import-on-demand),例如 impo ...
- java.nio.ByteBuffer用法小结
转载自 java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...
- Java Spring IOC用法
Java Spring IOC用法 Spring IoC 转载于:http://www.cnblogs.com/flowwind/p/4772375.html 在前两篇文章中,我们讲了java web ...
- 设计模式--模板方法模式--Java实现-- java访问控制关键字用法
1.什么是模板方法 2.具体实现步骤 5.优缺点 6适用场景 java访问控制关键字用法 – protected的解释 (1)私有的:用关键字private修饰,只有本类可见. (2)默认的:不用访问 ...
- Java List相关用法
Java List相关用法 1. subList 2. Queue接口 3. Deque接口 4. List常用算法 5. Collections.sort方法 6. Comparator接口 1. ...
- 设计模式 - 观察者模式(Observer Pattern) Java内置 用法
观察者模式(Observer Pattern) Java内置 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26601659 ...
最新文章
- 关于Javascript闭包的理解
- php页面增加自选项,php - 添加自定义设置选项卡,Woocommerce的设置客户列表内容 - SO中文参考 - www.soinside.com...
- CodeForces - 1325F Ehabs Last Theorem(dfs树找最大环)
- java jar 环境变量_java-jar jar包带环境变量(参数)启动
- 深入浅出InfoPath——动态获取InfoPath中的命名空间
- linux检查nginx 状态,Nginx配置检测服务状态的实现方法,
- 《并行计算的编程模型》一3.5 远程内存访问:put和get
- Python基础篇:用Python简简单单写个星空大战,可不能用来摸鱼啊~
- 茶 —— 一片树叶的故事(茶叶的品类)
- 2018第17周总结
- 无线网卡插到服务器 没有反应,无线网卡插上没反应怎么办
- iOS 导航栏透明度 监听导航栏返回进度
- oracle+soacs,第 3 章 使用 C++ 编译器选项
- 关于USB3.0的U盘正确用法
- android华为获取相册,解决华为手机获取相册图片路径为null
- register解析
- 一拍是多少秒 计算机制音乐,bpm换算节拍(bpm多少算快歌)
- Mac上如何提取图片上的文字?
- 亚伟计算机速录测试软件,亚伟中文速录机软件
- --->MYSQL<---
热门文章
- 关于JVM和JIT的一点点
- 英语中的开音节和闭音节
- SublimeText如何让代码的关键字高亮显示
- 人类一败涂地邀请好友一直显示连接服务器,人类一败涂地怎么邀请好友 局域网创建房间方法图文教学-游侠网...
- python判断奇偶数字符串的拼接_Python字符串拼接方法总结
- python判断相同,Python判断两个文件是否相同与两个文本进行相同项筛选的方法
- python使用欧氏距离knn_python运用sklearn实现KNN分类算法
- python回声程序 一行代码_python实现的比较完成的带声音的摩斯码翻译程序的代码...
- 利用C/C++实现较完整贪吃蛇游戏
- Python3只出现一次数字