首页 > 数据库 >JPA的@Query与@Param注解使用方式 执行原生sql参数是否加@Param 这里明白了

JPA的@Query与@Param注解使用方式 执行原生sql参数是否加@Param 这里明白了

时间:2023-07-13 15:34:04浏览次数:44  
标签:JPA value Entity Param sql Query id

JPA的@Query与@Param注解使用方式 执行原生sql参数是否加@Param 这里明白了
原文链接:https://blog.csdn.net/m0_37965811/article/details/123034370

@QueryJPA 中的注解,用于绑定方法和与数据库表有关的操作。

它的查询语法格式分为两种,一种是数据库原生语句,这种方式需要在属性里面显式地将nativeQuery属性设置为true。另一种是 JPA 的语法格式, 这种方式需要搭配@Entity@Table注解使用。

它的参数调用格式也分为两种,一种是通过?+入参坐标的形式来调用,例如:?1。另一种则是通过:+变量名的形式调用,例如::userName。当使用第二种方式时,需要用@Param来对参数名进行映射。

搭配使用

  • @Param:绑定参数。

  • @Entity:定义实体类。value属性定义类名,在 @Query 中使用 JPA 格式的写法时需要使用该值作为实体类名

  • @Table:定义表结构。name属性用于绑定数据库中的表名,若没有该值则默认表名为 Entity 标签中的value值。

注意:在 java 代码中仍通过 java 类名来调用被 @Entity 标注的类。 调用方式:  Java 代码 -----> java 类名  JPA 语法 -----> @Entity 中的value

使用方法

  • 标注于继承了Repository的接口类中的方法上

  • 需要参数的话需要配合@Param注解使用

  • 分为 JPA 语法格式的查询和原生语句语法格式的查询

//原生语句
@Query(value = "select * from User where user_id = :id", nativeQuery = true)
List<User> findUser(@Param(value = "id") String userId);
//这里假定已经定义了一个User类,并且用@Entity(value = "userTable")注解标注过
​
//JPA语法格式
@Query(value = "select u from userTable u where u.userId = :id")
List<User> findUser(@Param(value = "id") String userId);

参数写法

//以原生语句为例,JPA语法格式使用方法相同
​
//方式一
@Query(value = "select * from User where user_id = :id", nativeQuery = true)
List<User> findUser(@Param(value = "id") String userId);
​
//方式二
@Query(value = "select * from User where user_id = ?1 and user_name = ?2", nativeQuery = true)
List<User> findUser(String userId, String userName);
如果使用 1? 2? 这种方式指明了对应参数,可以不加@Param

标签:JPA,value,Entity,Param,sql,Query,id
From: https://www.cnblogs.com/sunny3158/p/17551033.html

相关文章

  • sql优化篇
    简单优化:1、不要使用select*,尽量避免回表查询2、尽量避免in语句3、如果like语句前后模糊匹配导致索引失效,可以使用  SELECT*FROMtableWHEREINSTR(name,'keyword')>0; 4、其余字段加索引5、limit时,尽量添加orderby[索引字段],可以在大数据量时提高查询速度6......
  • psql学习笔记
    目录Q:命令行执行文件里面的语句Q:docker本地运行psqlQ:常用命令Q:windows启动命令Q:统计数据库或表的磁盘空间占用Q:查询psql中的表结构信息Q:命令行执行文件里面的语句psql-Ugalax-W"wei***@123"-ddb_name-p5432-fxxx.sqlQ:docker本地运行psql1、获取最新的postg......
  • Postgresql统计所有表的基本信息(如行数、大小等)
    pg_class目录pg_class记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见pg_index)、序列、视图、物化视图、组合类型和TOAST表。pg_class中的一些逻辑标志被以一种懒惰的方式维护:在正确状态时它们被保证为真,但是当条件不再为真时它们并不会被立刻重置为假。例如......
  • 如何实现rpm安装mysql的配置文件目录的具体操作步骤
    rpm安装mysql的配置文件目录MySQL是一个流行的关系型数据库管理系统,它提供了一种简单而高效的方式来管理和存储数据。在安装MySQL时,我们需要配置一些参数,以满足我们的需求。本文将介绍如何使用RPM包安装MySQL,并详细说明配置文件的目录和使用方法。RPM包安装MySQLRPM(Red......
  • Linux系统安装MySql服务器
    1、登录购买的云服务器,进入到根目录,如下图: 2、查看系统里是否有安装MySQL相关的程序包,有则需要先卸载,再重新安装,卸载过程文档后续补充,如需先卸载,可自行百度查找解决方案进行处理。查询是否安装命令:rpm-qa|grepmysql 如图,是已经安装的情况(如下截图的是redis,mysql同理)......
  • SQL Server 使用APPLY运算符
    从SQLServer2005开始,提供了APPLY运算符   附建表语句                   文章来源: 锋利的SQL(第2版)7.8使用APPLY运算符......
  • @IdClass 注解和@Id JPA联合主键和注意事项
    @IdClass注解和@IdJPA联合主键原文链接:https://www.hxstrive.com/subject/open_jpa/538.htm前面章节已经介绍了@Id注解,该注解定义实体类中某个属性为数据库的主键,一个实体里面必须有一个主键。本章节将介绍@IdClass注解,该注解用来为某个实体指定复合主键,复合主键存放在......
  • 如何实现查看mysql IO的具体操作步骤
    查看MySQLIO的流程在开发中,了解数据库的IO情况对于优化和性能调优非常重要。本文将指导你如何查看MySQL的IO情况,以帮助你更好地理解和优化数据库的性能。步骤概述下面是查看MySQLIO的流程概述。我将使用表格展示每个步骤和所需的代码。步骤描述步骤一连接到MySQL数......
  • 如何实现参考教材4.5.2,在Spark Shell中编写代码实现: 1、用SparkSQL 向Hive的表写入
    使用SparkSQL向Hive表写入数据的流程为了向Hive表写入数据,我们需要完成以下步骤:步骤描述1创建SparkSession2创建DataFrame3将DataFrame注册为表4写入数据到Hive表接下来,我们将逐步指导你完成这些步骤。步骤1:创建SparkSession首先,我们需要创建一个Spa......
  • SQL窗口函数OVER详细用法
    #SQL窗口函数OVER详细用法OVER的定义:​OVER用于为行定义一个窗口,它对一组值进行操作,不需要使用GROUPBY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。OVER的语法OVER([PARTITIONBYcolumn][ORDERBYculumn])PARTITIONBY子句进行分组;......