mybatis-plus如何配置mapper方法执行完主动释放连接
时间: 2023-08-03 17:04:41 浏览: 496
mybatis-plus默认使用的是Mybatis的连接池,连接池的默认配置是开启了自动提交事务(AutoCommit)的。因此,每次mapper方法执行完毕后,都会自动提交事务并释放连接。
如果需要手动控制事务或者释放连接,可以通过以下方式进行配置:
1. 手动控制事务:
在mybatis-plus的配置文件中,配置事务管理器(TransactionManager),例如:
```
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
```
然后在需要手动控制事务的方法中使用@Transactional注解即可。
2. 手动释放连接:
可以通过配置Mybatis的拦截器实现,例如:
```
@Intercepts({@Signature(type = Executor.class, method = "close", args = {})})
public class ConnectionInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
Object target = invocation.getTarget();
if (target instanceof Executor) {
Connection connection = ((Executor) target).getTransaction().getConnection();
if (connection != null && !connection.isClosed()) {
connection.close();
}
}
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
}
}
```
然后在mybatis-config.xml中配置该拦截器:
```
<plugins>
<plugin interceptor="com.example.ConnectionInterceptor"/>
</plugins>
```
这样,在执行完mapper方法后,拦截器会拦截到Executor的close方法,从而手动释放连接。
阅读全文