>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 12643 个阅读者 刷新本主题
 * 贴子主题:  【Spring专题】@Query和@Modifying注解的增删改操作 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2021-10-09 11:05:26     消息  查看  搜索  好友  邮件  复制  引用

本文参考《精通Spring:JavaWeb开发技术详解》,作者:孙卫琴,清华大学出版社出版


@Query注解不仅可以设定查询语句,还可以设定新增、更新和删除的语句:

如果使用SQL语句,可以进行新增、更新和删除操作。

如果使用JPQL语句,只能进行更新和删除操作,不能进行新增操作。

@Modifying注解用来告诉底层Hibernate,@Query注解中设定的语句用于新增、更新和删除对象,而不是用于查询对象。

如果使用@Query注解来执行新增、更新和删除操作,还必须对当前方法用@Transactional注解来声明事务。

例如以下CustomerDao接口的方法联合使用了@Query、@Modifying和@Transactional注解:
@Repository
public interface CustomerDao extends JpaRepository<Customer,Long>{
  @Transactional
  @Modifying
  @Query(
       value="insert into CUSTOMERS(NAME,AGE) values(?1,?2)",
       nativeQuery=true)
  int insertCustomer(String name,int age);

  @Transactional
  @Modifying
  @Query("update Customer  set age= ?1 where id=?2")
  int updateCustomer(int age,Long id);

  @Transactional
  @Modifying
  @Query("delete from Customer where id<2")
  int deleteCustomer(Long id);
}

以上CustomerDao接口的insertCustomer()方法的@Query注解使用SQL语句,updateCustomer()方法和deleteCustomer()方法的@Query注解使用JPQL语句。

@Modifying注解会限制以上方法的返回类型,只能是void、int或Integer类型,如果返回类型是int或Integer,表示数据库中受影响的对象的数目。


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->面向对象开发方法概述之开发思想(上)
  JavaWeb开发-->使用过滤器
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->Vue Router路由管理器
  Vue3开发-->虚拟DOM和render()函数
  【Spring Cloud Alibaba专题】@SentinelResource注解的用法
  【Java基础编程专题】浮点数的格式化以及运算精度
  【Spring专题】Spring MVC是否过时?
  【Spring专题】把Model的数据存放在session范围
  【持久化专题】映射对象标识符的基本原理
  【持久化专题】用@MapsId注解映射派生主键
  【持久化专题】从JPA API中获得Hibernate API
  【持久化专题】JPA API的基本用法
  【持久化专题】通过JPA API调用存储过程
  【Java网络编程专题】用Apache HttpClients下载网上的图片等...
  【Java网络编程专题】用java.net.URL类访问HTTP服务器读取网...
  【Java网络编程专题】用Java套接字访问HTTP服务器读取网页数...
  【Java网络编程专题】用Java套接字编写基本的客户/服务器程序
  【JavaWeb专题】选择32位或64位JDK或者Apache HTTP服务器的安...
  【Java基础编程专题】Java集合与数组的互换
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。