查询数据时,人们往往需要设置查询条件。在SQL或HQL语句中,查询条件常常放在where子句中。此外,Hibernate还支持Criteria查询(Criteria

Query),这种查询方式把查询条件封装为一个Criteria对象。在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criteria的add()方法加入到Criteria实例中。这样,程序员可以不使用SQL甚至HQL的情况下进行数据查询。

先看一个简单的例子:

Criteria cr=session.createCriteria(Student.class);//生成一个Criteria对象cr.add(Restrictions.eq("name","xy"));

//等价于where name=’xy’List list=cr.list();

我们来看运算符这样一个对比。

HQL运算符

QBC运算符

含义

=

Restrictions.eq()

等于equal

<>

Restrictions.ne()

不等于not equal

>

Restrictions.gt()

大于greater than

>=

Restrictions.ge()

大于等于greater than or equal

<

Restrictions.lt()

小于less than

<=

Restrictions.le()

小于等于less than or equal

is null

Restrictions.isnull()

等于空值

is not null

Restrictions.isNotNull()

非空值

like

Restrictions.like()

字符串模式匹配

and

Restrictions.and()

逻辑与

and

Restrictions.conjunction()

逻辑与

or

Restrictions.or()

逻辑或

or

Restrictions.disjunction()

逻辑或

not

Restrictions.not()

逻辑非

in(列表)

Restrictions.in()

等于列表中的某一个值

not in(列表)

Restrictions.not(Restrictions.in())

不等于列表中任意一个值

between x and y

Restrictions.between()

闭区间xy中的任意值

not between x and y

Restrictions.not(Restrictions..between())

小于值X或者大于值y

Criteria什么时候威力最大呢?就是多条件查询的时候。

视图是这样:

学号

/>

姓名

/>

/>

我们可以这样做:

Entity层

public class Student

{

private

int id;

private

String name;

private

Date birth;

...........

}

DTO层

public

class StudentDto

{

private int

id; // 学生编号

private String name;// 学生姓名

public int getId()

{

return id;

}

public void setId(int id)

{

this.id = id;

}

public String getName()

{

return name;

}

public void setName(String

name)

{

this.name = name;

}

}

Impl层

public

PageModel getQqueryResult(StudentDto dto, int start, int

pagesize)

{

Criteria c =

this.getSession().createCriteria(Student.class);

if (0 != dto.getId())

{

c.add(Restrictions.like("id",

dto.getId()));

}

if

(null != dto.getName() &&

!"".equals(dto.getName()))

{

c.add(Restrictions.like("xm",

"%" + dto.getName() + "%"));

}

int count =

c.list().size();

List datas =

c.setFirstResult(start).setMaxResults(pagesize).list();

int totalPage =

helper.totalPage(count, pagesize);

// 得到结果集

PageModel pm = new

PageModel();

pm.setTotal(count);

pm.setDatas(datas);

pm.setTotalPage(totalPage);

return pm;

}

.......下面就涉及到Struts和SSH分页的知识了,在这里就不多赘述了。^ ^

hibernate的查询条件lt_hibernate的多条件查询——Criteria Query的应用相关推荐

  1. java+criteriaquery_Hibernate动态条件查询(Criteria Query)

    1.创建一个Criteria实例 net.sf.hibernate.Criteria这个接口代表对一个特定的持久化类的查询.Session是用来制造Criteria实例的工厂. Criteria cr ...

  2. jpa mysql sql分页查询语句_JPA多条件复杂SQL动态分页查询功能

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  3. mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...

    一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节 ...

  4. Django框架(11.Django中的通过模型类查询数据以及相关函数和条件)

     Django中的查询函数 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询.    不管哪个函数注意返回值的类型 函数名 功能 返回值 说明 get 返回表中满足条件的 ...

  5. JPA多条件复杂SQL动态分页查询

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  6. php ci model条件查询,Laravel关系模型指定条件查询方法

    对于关系模型来说,有时候我们需要甄别关联后结果,例如,班级和学生是一对多关联,我现在查询班级,但是想只显示正常状态,即状态为1的学生,因为有的学生从这个班级里面删除了,状态是4,那么我们在查询的时候就 ...

  7. NHibernate之旅(4):探索查询之条件查询(Criteria Query)

    本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...

  8. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...

    mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...

  9. Laravel最佳实践--根据搜索参数为Model查询应用不同的Where条件

    我们平时使用Laravel的Model查询当查询应用了多个条件的时候一般都是链式调用,像下面这样: User::where('age', '=', 18)->where('sex', '=', ...

最新文章

  1. 通过data:image/png;base64把图片直接写在src里
  2. 在eclipse中开发servlet流程
  3. MyBatis4:动态SQL
  4. linux cmake 交叉编译配置 简介
  5. Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory
  6. python装饰器两层和三层_2020 python学习第十六天————三层装饰器与迭代器
  7. 读取金税盘数据库_一种基于金税盘控制系统登录和数据同步的方法与流程
  8. 阿里云盘tv版 v1.0.6电视版
  9. 从游戏商业思维中分析游戏用户行为数据(主要是参考网上的一些感想)
  10. 播放器音视频同步及网络抖动解决方案
  11. 云电脑服务:技术与商业模式双重创新
  12. Java B组蓝桥杯第七届国赛:圆圈舞
  13. 药品市场信息查询-药品数据库(全面)
  14. CSS3 SVG波浪线条动画js特效
  15. 抖音小程序实践二:常用权限申请
  16. 博途SCL边沿触发(上升沿/下降沿)有输入无输出
  17. host管理工具SwitchHosts的使用
  18. 腾讯云轻量应用服务器一键搭建Discuz Q
  19. Project为项目设置预算
  20. 复旦微电子单片机【国产单片机】

热门文章

  1. 基于python的文件传输程序_GitHub - orange0cat/python-ft: 基于socket的文件传输程序,能传输整个文件夹...
  2. 解决打不开SQL Server配置管理器的问题
  3. 视频怎么转成mp3音频
  4. 无人货架的战争要结束了
  5. 把计算机放到手机桌面,有什么提醒软件可以把待办放在桌面上显示?
  6. MATLAB—医学图像读取(1)
  7. Matlab图形绘制(五)绘制矩阵的条形图、面积图、二维饼图
  8. es6如何修改json数组里的某个值_如何通过id使用纯Javascript(ES6)合并两个json对象值...
  9. Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)
  10. 信息学测python知识点(五)循环结构