mybatisplus中主动提交事务
时间: 2023-09-25 15:11:38 浏览: 53
在Mybatis Plus中,可以使用@Transactional注解来实现主动提交事务。在给定的引用中,Balance215Mapper接口中的insertBalance215Data方法被@Transactional(propagation= Propagation.REQUIRES_NEW)注解修饰,这表示该方法会在单独的事务中被执行,并且在方法执行结束后,会主动提交事务。这意味着如果该方法执行成功,事务会被提交,如果执行失败,事务会回滚。因此,使用该注解可以方便地实现主动提交事务的功能。
相关问题
mybatisplus如何设置手动提交事务和回滚
事务?
要设置手动提交事务,只需要在代码中使用开启事务的方式,例如:
```java
// 获取连接,开启事务
Connection conn = dataSource.getConnection();
conn.setAutoCommit(false);
try {
// 执行需要提交的业务逻辑
// ...
// 提交事务
conn.commit();
} catch (Exception e) {
// 发生异常,回滚事务
conn.rollback();
} finally {
// 关闭连接
conn.close();
}
```
如果需要回滚事务,只需要在发生异常的时候调用 `conn.rollback()` 即可。
当然,在使用 Mybatis-Plus 的时候,可以使用 `@Transactional` 注解开启事务,避免手动开启和提交事务的操作,具体使用方式可以参考 Mybatis-Plus 的官方文档。
mybatisplus多数据源事务
Mybatis-Plus 多数据源事务配置可以通过 Spring Boot 中的 TransactionAutoConfiguration 自动配置类来实现。
1. 首先,在 application.properties 或 application.yml 中配置多个数据源的相关信息。
```
# 数据源 1
spring.datasource.datasource1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.datasource1.username=root
spring.datasource.datasource1.password=123456
spring.datasource.datasource1.driver-class-name=com.mysql.jdbc.Driver
# 数据源 2
spring.datasource.datasource2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.datasource2.username=root
spring.datasource.datasource2.password=123456
spring.datasource.datasource2.driver-class-name=com.mysql.jdbc.Driver
```
2. 创建多个数据源的 DataSource 对象,并注册到 Spring 的 Bean 容器中。
```
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSource1")
@ConfigurationProperties(prefix = "spring.datasource.datasource1")
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dataSource2")
@ConfigurationProperties(prefix = "spring.datasource.datasource2")
public DataSource dataSource2() {
return DataSourceBuilder.create().build();
}
}
```
3. 配置 Mybatis-Plus 的 SqlSessionFactory 和 TransactionManager,指定对应的数据源。
```
@Configuration
@MapperScan(basePackages = {"com.example.mapper"})
public class MybatisPlusConfig {
@Bean(name = "sqlSessionFactory1")
public SqlSessionFactory sqlSessionFactory1(@Qualifier("dataSource1") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
return sqlSessionFactory.getObject();
}
@Bean(name = "sqlSessionFactory2")
public SqlSessionFactory sqlSessionFactory2(@Qualifier("dataSource2") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
return sqlSessionFactory.getObject();
}
@Bean(name = "transactionManager1")
public DataSourceTransactionManager transactionManager1(@Qualifier("dataSource1") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "transactionManager2")
public DataSourceTransactionManager transactionManager2(@Qualifier("dataSource2") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
```
4. 在需要进行事务管理的方法上使用 @Transactional 注解,并指定对应的 TransactionManager。
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper1;
@Autowired
private UserMapper userMapper2;
@Transactional(transactionManager = "transactionManager1")
public void addUser1(User user) {
userMapper1.insert(user);
}
@Transactional(transactionManager = "transactionManager2")
public void addUser2(User user) {
userMapper2.insert(user);
}
}
```
这样,就可以实现多数据源的事务管理了。注意,如果需要在同一个方法中操作多个数据源,需要手动处理事务。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)