JPQL(Java持久性查询语言)是一种面向对象的查询语言,用于对持久实体执行数据库操作。 JPQL不使用数据库表,而是使用实体对象模型来操作SQL查询。 这里,JPA的作用是将JPQL转换为SQL。因此,它为开发人员提供了一个处理SQL任务的简单方式。
JPQL是实体JavaBeans查询语言(EJBQL)的扩展,向其添加了以下重要功能 -
- 它可以执行连接操作。
- 它可以批量更新和删除数据。
- 它可以使用排序和分组子句执行聚合函数。
- 单值和多值结果类型。
JPQL功能特性
- 它是一种独立于平台的查询语言。
- 它简单而强大。
- 它可以用于任何类型的数据库,如:MySQL,Oracle。
- JPQL查询可以静态地声明为元数据,也可以动态构建在代码中。
在JPQL中创建查询
JPQL提供了两种可用于访问数据库记录的方法。 这些方法是 -
-Query createQuery(String name)
- EntityManager接口的createQuery()
方法用于创建一个用于执行JPQL语句的Query接口实例。
Query query = em.createQuery("Select s.s_name from StudentEntity s");
此方法创建可在业务逻辑中定义的动态查询。
Query createNamedQuery(String name)
- EntityManager接口的createNamedQuery()
方法用于创建用于执行命名查询的Query接口实例。
此方法用于创建可以在实体类中定义的静态查询。@NamedQuery(name = "find name" , query = "Select s from StudentEntity s")
现在,可以通过以下Query接口方法来控制查询的执行 -
int executeUpdate()
- 此方法执行更新和删除操作。int getFirstResult()
- 此方法返回查询对象设置为检索的第一个定位结果。int getMaxResults()
- 此方法返回查询对象设置为检索的最大结果数。java.util.List getResultList()
- 此方法返回结果列表作为非类型化列表。Query setFirstResult(int startPosition)
- 此方法分配要检索的第一个结果的位置。Query setMaxResults(int maxResult)
- 此方法分配要检索的最大结果数。