JPQL语言和Query接口简解

简介: JPQL语言和Query接口简解

【1】JPQL语言

JPQL语言,即 Java Persistence Query Language 的简称。

JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。

JPQL语言的语句可以是 select 语句、update 语句或delete语句,它们都通过 Query 接口封装执行。

注意:JPQL语言不支持insert语句!

【2】Query接口

javax.persistence.Query接口封装了执行数据库查询的相关方法。调用 EntityManager 的createQuery、create NamedQuery 及 createNativeQuery 方法可以获得查询对象,进而可调用 Query 接口的相关方法来执行查询操作。

Query接口的主要方法

① int executeUpdate()

用于执行update或delete语句。

② List getResultList()

用于执行select语句并返回结果集实体列表。

③ Object getSingleResult()

用于执行只返回单个结果实体的select语句。

④ Query setFirstResult(int startPosition)

用于设置从哪个实体记录开始返回查询结果。

⑤ Query setMaxResults(int maxResult)

用于设置返回结果实体的最大数。与setFirstResult结合使用可实现分页查询。

⑥ Query setFlushMode(FlushModeType flushMode)

设置查询对象的Flush模式。

参数可以取2个枚举值:

FlushModeType.AUTO 为自动更新数据库记录;
FlushMode Type.COMMIT 为直到提交事务时才更新数据库记录。

⑦ setHint(String hintName, Object value)

设置与查询对象相关的特定供应商参数或提示信息。参数名及其取值需要参考特定 JPA 实现库提供商的文档。如果第二个参数无效将抛出IllegalArgumentException异常。

⑧ setParameter(int position, Object value)

为查询语句的指定位置参数赋值。Position 指定参数序号,value 为赋给参数的值。

⑨ setParameter(int position, Date d, TemporalType type)

为查询语句的指定位置参数赋 Date 值。

osition 指定参数序号,value 为赋给参数的值,temporalType 取 TemporalType 的枚举常量,包括 DATE、TIME 及 TIMESTAMP 三个。用于将 Java 的 Date 型值临时转换为数据库支持的日期时间类型(java.sql.Date、java.sql.Time及java.sql.Timestamp)。


⑩ setParameter(int position, Calendar c, TemporalType type)

为查询语句的指定位置参数赋 Calenda r值。position 指定参数序号,value 为赋给参数的值,temporalType 的含义及取舍同前。

(11) setParameter(String name, Object value)

为查询语句的指定名称参数赋值。

(12) setParameter(String name, Date d, TemporalType type)

为查询语句的指定名称参数赋 Date 值。TemporalType type用法同前。

(13) setParameter(String name, Calendar c, TemporalType type)

为查询语句的指定名称参数设置Calendar值。

name为参数名,其它同前。

该方法调用时如果参数位置或参数名不正确,或者所赋的参数值类型不匹配,将抛出 IllegalArgumentException 异常。



目录
相关文章
|
5月前
|
SQL Java API
Java一分钟之-JPA查询:JPQL与Criteria API
【6月更文挑战第14天】本文探讨了Java Persistence API (JPA)中的两种查询方式:JPQL和Criteria API。JPQL是面向对象的SQL,适用于简单查询,而Criteria API则提供类型安全的动态查询构造。文章指出了每种方法的常见问题和避免策略,如混淆实体属性与数据库字段、参数绑定错误、过度复杂化和性能问题。建议开发者根据需求选择适当的方法,并关注查询的可读性、可维护性和性能优化。
68 2
|
6月前
|
Java
开发指南004-@Query参数写法
JPA的Query注解和函数参数的绑定有多种写法
|
SQL Java 数据库连接
Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
259 0
|
机器学习/深度学习 算法
query语义改写
1. 问题背景   商品检索的主要的问题还是在于用户query和商品描述之间存在GAP,特别是中长尾query。把问题分成以下几种类型: 多种描述:划痕笔/补漆笔/修补笔/点漆笔 信息冗余:   冰箱温控器温度控制==冰箱温控器 属性检索: 118冰箱、60寸液晶电视机4k高清智能60曲面 宽泛意图: 超美吊灯、大容量冰箱 2.所做工作   query改写的目标空间可以分为文本空间和意图ID空间两种类型:文本空间包含词、短语、query,意图ID空间主要包括pidvid、性别年龄尺码等自定义tag、一些语义聚合的标签如:"奢侈","可爱"等。
10124 1
|
SQL Java 数据库连接
Hibernate中执行NativeSQL语句查询返回自定义类型的POJO实例的List(多表查询)
Hibernate中定义了hql的概念,简单地说就是,为java的码农提供了一套类似于sql的语法,但是数据表名变成了PO名,数据字段名变成了PO中属性成员名,并把这种语法称为hql。优点就是:hql看上去是面向对象的,码农不需要知道数据库中数据表的结构,只需要依据PO编写面向对象的数据库增删改查的语句。
4172 0
|
SQL Java 数据库
GreenDAO 3.2 源码分析(1):查询语句与Query实例的构造
greenDAO是一款优秀的对象关系映射(ORM)框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。和复杂麻烦的Android原生数据库API相比较,greenDAO可谓是简单实用,功能强大,不仅性能突出,而且有着丰富文档资料,是当前最为活跃的Android ORM框架。
1116 0
下一篇
无影云桌面