springboot 同一个事务中@Transactional表被锁

7 篇文章 0 订阅

虽然在datagrip中可以查到数据,但是由于代码中是事务处理的,该字段被锁住了,所以导致查询不到。

`@Transactional` 是Spring框架提供的一个用于声明式事务管理的注解。它允许开发者通过简单地在方法上或类上添加该注解来声明事务边界,而不需要编写事务管理的代码。使用`@Transactional`注解,Spring容器会根据配置创建一个代理,这个代理会拦截带有`@Transactional`注解的方法调用,并在运行时进行事务管理。 `@Transactional`注解的基本使用方法如下: 1. **在方法上使用:** 当你在方法上使用`@Transactional`注解时,Spring会在该方法开始执行时开启一个事务,并在方法执行完毕后,根据方法的执行结果决定是提交事务还是回滚事务。 2. **在类上使用:** 当你在类上使用`@Transactional`注解时,Spring会对类的所有公共方法应用事务管理。如果类的某些方法不应该使用事务或者需要不同的事务管理策略,可以在这些方法上单独使用`@Transactional`注解并指定不同的属性。 `@Transactional`注解的常用属性包括: - `value` 或 `transactionManager`:指定事务管理器的名称。 - `propagation`:指定事务的传播行为,例如`Propagation.REQUIRED`、`Propagation.REQUIRES_NEW`等。 - `isolation`:指定事务的隔离级别,例如`Isolation.DEFAULT`、`Isolation.READ_COMMITTED`等。 - `timeout`:指定事务的超时时间。 - `readonly`:指定事务是否只读,默认为false。 使用示例: ```java @Service public class MyService { @Transactional public void doSomething() { // 业务逻辑 } @Transactional(propagation = Propagation.REQUIRES_NEW) public void doSomethingElse() { // 另一个业务逻辑,需要新的事务 } } ``` 在上述代码,`doSomething`方法和`doSomethingElse`方法都被`@Transactional`注解修饰,意味着它们的操作会发生在事务上下文。其`doSomethingElse`方法因为指定了`propagation = Propagation.REQUIRES_NEW`,所以在调用时会开启一个新的事务,即使当前已经有事务存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值