多语言展示
当前在线:1925今日阅读:75今日分享:44

Spring Data JPA注解式查询方法

Spring Data JPA支持JPQL语法,可以使用注解的方式自定义查询语句,可以使用sql原生的语法,也可以使用JPQL语法,我们使用@Query注解的value和nativeQuery的值。使用声明式的JPQL语句,可以在启动项目的时候就知道语法是否正确,语法错误额时候启动就会报错。
工具/原料

IntelliJ IDEA

方法/步骤
1

首先,声明的注解在Repository的查询方法上,例如 select u from User u 我们可以看出和原生sql有些不同之处,另外也支持 大于小于等查询select u from User u where u.age > 30。

2

使用注解实现模糊查询,注意模糊查询的字段不会自动加上%关键字的,需要在查询语句上手动去拼接,查询条件的写法也需要注意。

3

另外,也支持原生的sql查询,只需要设置nativeQuery = true即可。nativeQuery 是不支持直接传Sort参数进行排序的,我们直接在sql中使用order by进行排序,模糊查询中%的拼接还可以使用concat关键字。

4

@Query注解在JPQL的情况下,可以使用PageRequest或者Sort参数,排序的字段需要和Entity实体类中的字段名称相匹配。使用Page对象进行接收的时候,参数直接传Pageable即可。

5

对原生sql的分支支持不太好用,注意在下图中#pageable#是必须的,查询和计数count要分开写,分别写两条sql语句,使用起来比较麻烦,不太建议这么做,会让接收代码的人很难看懂,这种情况下就可以考虑将结果查出后手动分页了。

6

@Param注解的使用,一般情况下方法的传参是通过顺序绑定的方式进行的,传参时很容易弄错参数的位置,使用@Param注解可以绑定参数传参时的具体名称,非常实用。

7

最后再介绍一下@Modifying注解,该注解的作用是修改和删除,配合@Query注解,使用JPQL或者原生sql进行操作,代码如下图所示。

注意事项

注意JPQL和原生sql语法的区别。

推荐信息