Criteria

使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。

构建Criteria查询

Criteria 这个接口代表对一个特定的持久化类的查询,Session是用来创建Criteria实例的工厂:
创建方法:Criteria criteria = session.createCriteria(Mytest.class);

Criteria对SQL进行封装,让开发人员可以用对象的方式对数据库进行操作。
查询User的所有字段

Criteria criteria = session.createCriteria(User.class);
List users = criteria.list();
Iterator iterator = users.iterator();
while(iterator.hasNext()){User user = (User)iterator.next();System.out.println(user.getId() +" \t " + user.getName() +"/" + user.getAge());
}

Criteria是个容器,如果想要设定查询条件,则要使用add()方法加入Restrictions的条件限制。
如下,查询age大于20且小于40的的数据

Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.gt("age",new Integer(20)));
criteria.add(Restrictions.it("age",new Integer(40)));
List users = criteria.list();

使用逻辑组合来进行查询

age等于(eq)20或者(or)age为空(isNull)

`Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.or(Restrictions.eq("age",new Integer(20)),Restrictions.inNull("age")));
List users = criteria.list();

限定查询数量 分页查询

Criteria的setMaxResults()方法可以限定查询回来的数据量,如果配合setFirstResult()设定传回查询结果起始数据的位置,就可以实现简单的分页,例如传回第51条之后的50条数据(如果有的话):

Criteria criteria = session.createCriteria(User.class);criteria.setFirstResult(51);criteria.setMaxResults(50);List users = criteria.list();

使用Property来进行查询

Property实例是获得一个条件的另外一种途径。你可以通过调用Property.forName() 创建一个使用add()方法加入条件时,预设是使用and来组合条件

Property age = Property.forName("age");List cats = sess.createCriteria(Cat.class).add( Restrictions.disjunction().add( age.isNull() ).add( age.eq( new Integer(0) ) ).add( age.eq( new Integer(1) ) ).add( age.eq( new Integer(2) ) ) ) .add( Property.forName("name").in( new String[] { "Fritz", "Izi", "Pk" } ) ).list();

Restrictions常用限定查询方法

    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 相当于SQL的 is null

    Restrictions.isNotNull –> 与isNull相反 相当于SQL的 is not null

    Restrictions.sqlRestriction –> SQL限定的查询

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

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

hibernate中Expression和Restrictions的用法有什么区别
Expression是底层的,能够支持嵌套查询。
Restrictions是已实现的基础的查询方式,一般用这个得多。

Criteria查询用法相关推荐

  1. mybatis :Criteria 查询、条件过滤用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. PS:hibernate 中也有 Criteria 的用法,见另一文章:jpa : criteria ...

  2. java criteria and_criteria用法

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

  3. JPA criteria 查询:类型安全与面向对象

    序言 自工作以来,除了以前比较流量的hibernate,就是一直使用ORM 规范 JPA了.而这几天工作需要,研究了下JPA的标准查询,名为:JPA criteria查询.相比JPQL,其优势是类型安 ...

  4. Criteria的用法

    一.Hibernate提供了5种检索对象的方式 1.导航对象图检索方式:根据已经加载的对象导航到其他对象    from  Emp e group by e.dept.deptName 2.OID检索 ...

  5. Criteria的用法详解

    Criteria 使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装. 构建Criteria查询 Criteria 这个接口代表对 ...

  6. Hibernate之Criteria查询及注解

    1. 前言 之前从来没有接触过Hibernate,跳槽之后的公司使用的是Hibernate的Criteria查询.简单整理一下. 2.什么是Criteria查询QBC(Query By Criteri ...

  7. php中条件查询语句,thinkphp3.2框架中where条件查询用法总结

    本文实例讲述了thinkphp3.2框架中where条件查询用法.分享给大家供大家参考,具体如下: thinkphp3.2 where 条件查询 在连贯操作中条件where的操作有时候自己很晕,所以整 ...

  8. Linux下Mysql的查询用法

    Linux下Mysql的查询用法 一.Mysql的delete删除语法 1.删除数据库 2.删除数据库的表 二.查询数据 1.基本查询 2.条件查询 三.数据库插入数据 1.创建新表 2.插入数据 四 ...

  9. c3p0 参数 模糊查询_MySQL模糊查询用法大全(正则、通配符、内置函数等)

    文章来源:MySQL模糊查询用法大全(正则.通配符.内置函数等) 原文作者:陈哈哈 来源平台:CSDN SELECT * from table where username like '%陈哈哈%' ...

最新文章

  1. c语言递归求五阶行列式源代码,久游堂怎么样 -官网
  2. 加油!兄弟连的兄弟们!
  3. 微服务注册发现集群搭建——Registrator + Consul + Consul-template + nginx
  4. 正则表达式 (re包)——python(快餐)
  5. JAVA 操作系统已经来到第五个版本了 现陆续放出三个版本 这是第二个版本
  6. VS2010版快捷键指南
  7. SSH框架下的表单重复提交
  8. Java实现密码加密
  9. 计算机导论操作系统教案,《计算机导论》教案.doc
  10. CentOS6.5修改系统语言为英语
  11. 什么是量子加密(一)
  12. 软件测试中的人工智能现状:未来会怎样?
  13. mysql 1236错误_MySQL 1236错误解决方法_MySQL
  14. linux 2t gpt 分区,linux大于2T的磁盘使用GPT分区方式
  15. 求大神帮助 百练我爱北大,编程题目
  16. 企业进行固定资产盘点的作用
  17. Excel如何通过年份上的时间差操作求得员工工龄
  18. 河北计算机四六级报名入口,四六级考试报名入口
  19. PHP unlink的使用
  20. 高仿人人网客户端安卓源码

热门文章

  1. 如何转换图片格式?教你三招一键轻松转换图片格式
  2. 浏览器代理服务器出现问题
  3. 《软件体系结构》知识点整理
  4. 目标检测的国内外研究现状
  5. pytorch优化器详解:SGD
  6. Python:K折交叉验证,将数据集分成训练集与测试集
  7. 超前进位加法器 verilog代码
  8. tink.js # pixi辅助插件 — 中文翻译教程
  9. 程序员最关注的三大话题,第二个不信你不看
  10. Tekton笔记(四)之Authentication及catalog skopeo