概述
使用@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注解使用方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复