怎么在JPA中使用JPQL语句进行增删改查操作

  介绍

这篇文章将为大家详细讲解有关怎么在JPA中使用JPQL语句进行增删改查操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强> 1。Java持久化查询语句入门

List,人=,entityManager.createQuery (“select  p 得到Person  p") .getResultList ();

1。这个查询语句类似于SQL。但它与真正的SQL的区别是,它不是从一个表中进行选择查询,而是指定来自应用程序域模型的实体。

2。查询select子句也只是列出了查询实体的别名,如果只查询某一列的,可以使用点(.)操作符进行来导航实体属性。如下所示:

List,人=,entityManager.createQuery (“select  p.firstName 得到Person  p") .getResultList ();

<强> 1.1。筛选条件

像SQL一样,JPQL也支持,子句,用于对搜索的条件过滤。包括大多数的操作符,如:在中间,像以及函数表达式子字符串,长度等等

List, persons =, entityManager.createQuery (“select  p 得到Person  p  where  p.age> 23“) .getResultList ();

<强> 1.2。投影结果

对于查询的数据量比较大的话,可以使用投影的方式,只查询出有用的列。

//投影List, persons =, entityManager.createQuery (“select  p.firstName p.age 得到Person  p") .getResultList ();

<强> 1.3。聚合查询

JPQL的聚合查询语法类似于SQL。例如计数

List,数=entityManager.createQuery (“select 计数(p),得到Person  p") .getResultList ();

<强> 1.4。查询参数

JPQL支持两种类型的参数绑定语法。

1。位置参数表示法

其中参数是在查询字符串中指示,该字符串是在一个问号(?)之后紧随参数的编号。当执行查询的时候,开发人员指定应该替换的参数编

Query 查询=entityManager.createQuery (“select  p 得到Person  p  where  p.a ge=? 1,以及p.firstName=? 2“);   query.setParameter (21);   query.setParameter (2,“Jack");

2。命名参数表示法

通过在一个冒号(:)之后紧随参数名称,在查询字符串对它进行指示,当执行查询的时候,开发人员指定应该替换的参数名称

Query 查询=entityManager.createQuery (“select  p 得到Person  p  where  p.a ge=: age 以及p.firstName=: name");   query.setParameter (“age" 21);   query.setParameter (“name",“Jack");

<强> 2。定义查询

JPA提供查询和TypedQuery (JPA 2.0引入)接口来配置和执行查询.Query的返回的对象类型,而TypedQuery返回的是指定的类类型。

//未指定类型,返回对象类型   Query  q =, entityManager.createQuery (“select  p 得到Person  p");//指定返回类型为类人型   TypedQuery

<强> 2.1。动态查询定义

JPA查询引擎,可以将JPQL字符串解析成语法树,获取表达式中的实体对象,关系映射的元数据,然后生成等价的SQL。故有两种方式进行动态查询。

1。拼接字符串方式

提示:会引起SQL注入问题

/* *   ,*动态拼接字符串构建查询条件   ,*   ,* @param 名字   ,* @param 年龄   ,* @return   ,*/public  static  String  queryPersonJPQL(名称、String  int 年龄),{   ,String  queryQL =,“select  p 得到Person  p  where  p.firstName=, & # 39;“, +, name  +,“& # 39;,以及p.a ge=? +,年龄;   ,return  queryQL;   }//调用   ,Query  Query =, entityManager.createQuery (queryPersonJPQL (“jack",, 21));

2。动态参数化构建查询条件(推荐使用)

/* *   ,*动态参数化构建查询条件   ,*   ,* @return   ,*/public  static  String  queryPersonJPQLByParams (), {   ,String  queryQL =,“select  p 得到Person  p  where  p.firstName=: name 以及p.a ge=: age";   ,return  queryQL;   }      Query  Query =, entityManager.createQuery (queryPersonJPQLByParams ());   query.setParameter (“name",,“Jack");   query.setParameter (“age",, 21);

怎么在JPA中使用JPQL语句进行增删改查操作

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5