概述
@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注解使用方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复