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

概述

使用@Query的方式

       这种查询可以声明在继承JpaRepository接口方法中,可以在自定义的查询方法上使用@Query,来指定该方法要执行的自定义的查询语句,比如:

例子1:

@Query("select o from UserModel o where o.uuid=?1")

public List<UserModel> findByUuidOrAge(int uuid);

注意:

1:方法的参数个数必须和@Query里面需要的参数个数一致

2:如果是like,后面的参数需要前面或者后面加“%”,比如下面都对:

@Query("select o from UserModel o where o.name like ?1%")

public List<UserModel> findByUuidOrAge(String name);

@Query("select o from UserModel o where o.name like %?1")

public List<UserModel> findByUuidOrAge(String name);

@Query("select o from UserModel o where o.name like %?1%")

public List<UserModel> findByUuidOrAge(String name);

当然,这样在传递参数值的时候就可以不加‘%’了,当然加了也不会错

例子2:

还可以使用@Query来指定本地查询,参数nativeQuery = true才是表明了使用原生的sql,只要设置nativeQuery为true,比如:

@Query(value="select * from tbl_user where name like %?1" ,nativeQuery=true)

public List<UserModel> findByUuidOrAge(String name);

注意:当前版本的本地查询不支持翻页和动态的排序

使用命名化参数,使用@Param即可,比如:

@Query(value="select o from UserModel o where o.name like %:nn")

public List<UserModel> findByUuidOrAge(@Param("nn") String name);

例子3:

同样支持更新类的Query语句(delete或update的sql)时,添加@Modifying即可配合,配合@Modifying注解一同使用,则可以完成数据的删除、添加、更新操作,比如:

@Modifying

@Query(value="update UserModel o set o.name=:newName where o.name like %:nn")

public int findByUuidOrAge(@Param("nn") String name,@Param("newName") String newName);

注意:

1:方法的返回值应该是int,表示更新语句所影响的行数

2:在调用的地方必须加事务(可以使用注解方式@Transactional),没有事务不能正常执行

最后

以上就是年轻冬日为你收集整理的Spring Data JPA中的@Query注解使用方式的全部内容,希望文章能够帮你解决Spring Data JPA中的@Query注解使用方式所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部