Criteria 查询表达式

2024-02-21 20:48
文章标签 查询 表达式 criteria

本文主要是介绍Criteria 查询表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Criteria 本身只是一个查询容器,具体的查询条件需要通过 Criteria.add

方法添加到 Criteria 实例中。

如前例所示, Expression 对象具体描述了查询条件。针对 SQL 语法,

Expression 提供了对应的查询限定机制,包括:

方法

描述

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

间内。

Expression.between( "age" , new

Integer(13), new Integer(50));

 

Expression.like

 

对应 SQL 中的 “field like value” 表达式

 

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 ”起始的记录:

Expression.sql(

lower({alias}.name) like lower(?) ,

"Erica%" ,

Hibernate.STRING

);

其中的“ {alias} ”将由 Hibernate 在运行期使

用当前关联的 POJO 别名替换。

 

 

注意 Expression 各方法中的属性名参数(如 Express.eq 中的第一个参数),这里所谓属性名是 POJO 中对应实际库表字段的属性名(大小写敏感),而非库表中的实际字段名称。

 

Criteria 高级特性

限定返回的记录范围

通过 criteria. setFirstResult/setMaxResults 方法可以限制一次查询返回

的记录范围 :

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 作为一种对象化的查询封装模式,不过由于 Hibernate 在实现过程中将精力

更加集中在 HQL 查询语言上,因此 Criteria 的功能实现还没做到尽善尽美(这点上, OJB

Criteria 实现倒是值得借鉴),因此,在实际开发中,建议还是采用 Hibernate

方推荐的查询封装模式: HQL

 

 

这篇关于Criteria 查询表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733029

相关文章

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;