JPA:@Modifying注解(UPDATE或者DELETE)
来源:互联网 发布:淘宝忘记密码修改密码 编辑:程序博客网 时间:2024/05/01 04:13
通过 @Modifying 注解可以完成修改(UPDATE或者DELETE)操作(注意:不支持新增)
- SpringDataJpa——JpaRepository增删改查(请参考):http://blog.csdn.net/fly910905/article/details/78557110
package com.newcapec.dao.repository.pay;
import com.newcapec.dao.domain.UserEnroll;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* @Title: 用户报名缴费信息--DAO
* @ClassName: com.newcapec.dao.repository.pay.PayRepository.java
* @Description:
*
* @Copyright 2016-2017 - Powered By 研发中心
* @author: FLY
* @date: 2017-12-16 12:35
* @version V1.0
*/
@Repository
public interface PayRepository extends JpaRepository<UserEnroll, Long>,JpaSpecificationExecutor<UserEnroll> {
- /**
* @Title: 更新用户报名缴费信息,为支付成功
* @methodName: updateUserEnrollPaySuccess
* @param paytime
* @param orderno
* @param localOrderno
* @return int
* @Description:
*
* @author:
FLY* @date: 2017-12-18 8:41
*/
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query("UPDATE UserEnroll SET payflag = 2 , paytime = :paytime , orderno = :orderno WHERE localOrderno = :localOrderno")
int updateUserEnrollPaySuccess(@Param("paytime")Date paytime, @Param("orderno")String orderno , @Param
("localOrderno")String localOrderno);
}
测试:
package com.newcapec.dao;
import com.newcapec.dao.domain.UserEnroll;
import com.newcapec.dao.repository.pay.PayRepository;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Date;
import java.util.List;
/**
* @Title: 用户报名缴费信息--DAO测试
* @ClassName: com.newcapec.dao.PayRepositoryTest.java
* @Description:
*
* @Copyright 2016-2017 - Powered By 研发中心
* @author: FLY
* @date: 2017-12-16 13:29
* @version V1.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class PayRepositoryTest {
@Autowired
PayRepository payRepository;
/**
* @Title: 更新用户报名缴费信息,为支付成功
* @methodName: testUpdateUserEnrollPaySuccess
* @param
* @return void
* @Description:
*
* @author: 王延飞
* @date: 2017-12-18 8:21
*/
@Test
public void testUpdateUserEnrollPaySuccess() {
int i = payRepository.updateUserEnrollPaySuccess(new Date(), "2017121613345689", "2017121613345689");
UserEnroll userEnroll = payRepository.findByLocalOrderno("2017121613345689");
System.out.println("更新条数:"+i);
Assert.assertEquals("2017121613345689", userEnroll.getOrderno());
}
}
注意:
(1)可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作。 注意: JPQL 不支持使用 INSERT;
(2)在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作
(3)UPDATE 或 DELETE 操作需要使用事务,此时需要定义 Service 层,在 Service 层的方法上添加事务操作;
JPA实现的dao接口在写testcase时 需要加事务的注解,如上;
但正是环境,事务一般是加在service层;
(4)默认情况下, SpringData 的每个方法上有事务, 但都是一个只读事务。 他们不能完成修改操作。
阅读全文
1 0
- JPA:@Modifying注解(UPDATE或者DELETE)
- spring data jpa @Query注解中delete语句报错 : @Modifying注解的使用
- jpa 原生insert\delete\update\select语句
- jpa 原生insert\delete\update\select语句
- Plsql 执行update或者delete时卡死
- 实践spring data jpa:Executing an update/delete query........
- spring data jpa @Query注解中delete语句报错
- spring-data-jpa @Query注解中delete语句报错
- 使用JPA中@Query 注解实现update 操作
- oracle Plsql 执行update或者delete时卡死问题解决办法
- oracle Plsql 执行update或者delete时卡死问题解决办法
- sqlserver update或者Delete误操作恢复方法---【验证】
- SpringData系列@Query注解及@Modifying注解
- JPA注解
- JPA注解
- JPA注解
- JPA注解
- JPA注解
- Spring MVC体系结构和处理请求控制器
- mysql 查询语句
- Java集合结构关系图
- android studio 代码混淆
- loj6225「网络流 24 题」火星探险问题(费用流)
- JPA:@Modifying注解(UPDATE或者DELETE)
- dash + alfred 初试
- Python 3从入门到精通01-环境搭建
- 如何看待中通讯42岁员工坠楼事件?背后深层原因剖析!
- Spring启动后再执行
- Windows下安装Redis服务
- kubelet启动pod的源码分析
- nodejs读写文件
- 写在开始之前