sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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
posted on   sunny123456  阅读(702)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-07-13 C#发起Http请求,调用接口
2021-07-13 C#发起HTTP请求Post请求
2021-07-13 C# 调用HTTP接口两种方式Demo WebRequest/WebResponse 和WebApi
点击右上角即可分享
微信分享提示