JPQL语言和Query接口

来源:互联网 发布:做软件开发怎么样 编辑:程序博客网 时间:2024/05/29 17:03

【1】JPQL语言

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

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

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


【2】Query接口

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 值。

Position 指定参数序号,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 异常。