Criteria Query 可以看作传统sql的对象化表示。

Criteria 可以由session创建。

Criteria ct= session.createCriteria(TUser.class);

先来一段小Demo:

TbItemParamExample example = new TbItemParamExample();
Criteria criteria = example.createCriteria();
criteria.andItemCatIdEqualTo(cid);

Criteria中可以增加查询条件

ct.add(Expression.eq("name","Erica"));
ct.add(Expression.eq("sex",new Integer(1)));

Criteria中增加的查询条件可以由表达式对象创建

Expression.eq(对象属性名,对象属性值);

查询条件通过Criteria的add方法加入。

表达式对象的方法有:

  • eq 等于,第一个参数是对象属性,第二个参数是值

  • allEq 参数为一个Map对象,相当于多个eq的叠加

  • gt 大于

  • ge 大于等于

  • lt <

  • le <=

  • between 在两个值之间Expression.between("age",new Integer(10),new Integer(20));

  • like like查询

  • in in查询

  • eqProperty 用于比较两个对象的属性的值是否相等

  • gtProperty

  • geProperty

  • ltProperty

  • leProperty

  • and and方法可以嵌套Expression对象,用于and关系

  • or 同上

    Expression.or(
    Expression.eq("name","hulei"),
    Expression.eq("name","jane")
    );

sql 作为Expression对象的补充,本方法提供对原生sql的支持。注意,在Hibernate3中,引入了Restrictions类作为Expression的替代,以后的版本,不再推荐使用Expression。

但是,Restrictions类的使用方法和Expression的方法一致。注意,在查询条件中,Hibernate提供了一个Example查询,当查询条件比较多的时候,可以用Example查询来简化代码,使用方法如下:

   TUser user=new TUser();
user.setLoginName("hulei");
user.setPassword("hulei");
Criteria ct=session.createCriteria(TUser.class);
ct.add(Example.create(user));
return ct.list();

复合查询

Criteria查询可以嵌套Criteria来实现复合查询

如下:

 Criteria ct=session.createCriteria(TUser.class);
Criteria ctAddress=ct.createCriteria("addresses");//这里是嵌套了一个Criteria查询,这里的addresses是TUser的属性
ctAddress.add(Expression.like("address","%shanghai%"));
List list=ct.list();

Java Criteria使用方法的更多相关文章

  1. OpenCV3 Java 机器学习使用方法汇总

    原文链接:OpenCV3 Java 机器学习使用方法汇总  前言 按道理来说,C++版本的OpenCV训练的版本XML文件,在java中可以无缝使用.但要注意OpenCV本身的版本问题.从2.4 到3 ...

  2. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...

  3. Java中的方法应用

    一.如何定义java中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 语法: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.priv ...

  4. Java Runtime.availableProcessors()方法

    Java Runtime.availableProcessors()方法用法实例教程.   描述 java.lang.Runtime.availableProcessors() 方法返回到Java虚拟 ...

  5. paip.java OutOfMemoryError 解决方法o33

    paip.java OutOfMemoryError 解决方法o33 java.lang.OutOfMemoryError: Requested # java.lang.OutOfMemoryErro ...

  6. Java读写文件方法总结

    Java读写文件方法总结 Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既 ...

  7. java调用本地方法的时候报错 could not find the main class:xx.program will exit

    如图所示,当在java调用本地方法的时候报错 我的解决办法是把dll文件放到System.out.println(System.getProperty("java.library.path& ...

  8. 给NSString增加Java风格的方法

    给NSString增加Java风格的方法 文章目录 我实在受不了 NSString 冗长的方法调用了,每次写之前都要查文档.特别是那个去掉前后多余的空格的方法,长得离谱.与之对应的别的语言,拿 jav ...

  9. Java基础——clone()方法浅析

    一.clone的概念 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

随机推荐

  1. 远程连接linux | Xshell和Xftp下载安装

    为什么需要远程登录linux 公司开发时候, 具体的情况是这样的: Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器.这时我们就需要远程登录到Linux ...

  2. 经过4次优化我把python代码耗时减少95%

    背景交代 团队做大学英语四六级考试相关服务.业务中有一个care服务,购买了care服务考试不过可以全额退款,不过有一个前提是要完成care服务的任务,比如坚持背单词N天,完成指定的试卷. 在这个背景 ...

  3. 为什么不直接去Arraylist list = new Arraylist();而是直接通过List list = new ArrayList();使用接口的好处

    ArrayList不是继承List接口,是实现了List接口. 你写成ArrayList arrayList = new ArrayList();这样不会有任何问题.和List list = new ...

  4. 3组-Alpha冲刺-2/6

    一.基本情况 队名:发际线和我作队 组长博客:链接 小组人数:10 二.冲刺概况汇报 黄新成(组长) 过去两天完成了哪些任务 文字描述 在校内外进行了数据采集,采集了多场景的数据,并进行了帧分割. 展 ...

  5. SpringCloud微服务实战——搭建企业级开发框架(十七):Sentinel+Nacos配置持久化

      Sentinel Dashboard中添加的规则是存储在内存中的,我们的微服务或者Sentinel一重启规则就丢失了,现在我们将Sentinel规则持久化配置到Nacos中,在Nacos中添加规则 ...

  6. 菜鸡的Java笔记 java基础类库 BaseClassLibrary

    java基础类库 BaseClassLibrary        StringBuffer 类的特点        StringBuffer,StringBuilder,String 类之间的关系   ...

  7. 使用pmml跨平台部署机器学习模型Demo——房价预测

      基于房价数据,在python中训练得到一个线性回归的模型,在JavaWeb中加载模型完成房价预测的功能. 一. 训练.保存模型 工具:PyCharm-2017.Python-39.sklearn2 ...

  8. [bzoj3524]Couries

    首先用到bzoj2456的做法,因为要求这个数出现次数超过了一半,如果其与不同的数两两相消的话最终一定会剩下自身(如果不保证存在可能会剩下别的,但保证存在了只会剩下自身),然后再用可持久化线段树维护即 ...

  9. [luogu6185]序列

    对于2操作,如果把这些操作看成边,那么对于某一个连通块内的若干个点,满足权值可以任意分配(证明:归纳,若n个点可以,那么先将新增的点调整好,再对原来n个点重新分配即可),因此可以将原图缩点,并将连通块 ...

  10. 8.3 k8s部署jenkins,通过pv/pvc结合NFS服务器持久化

    1.制作jenkins docker镜像 1.1 下载jenkins wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.30 ...