我是靠谱客的博主 洁净树叶,最近开发中收集的这篇文章主要介绍JPA的@Query与@Param注解使用方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

它的查询语法格式分为两种,一种是数据库原生语句,这种方式需要在属性里面显式地将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);

最后

以上就是洁净树叶为你收集整理的JPA的@Query与@Param注解使用方式的全部内容,希望文章能够帮你解决JPA的@Query与@Param注解使用方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部