From 66fce38d6753062277e0d34a8dae40fe0725e89c Mon Sep 17 00:00:00 2001 From: life <13122192336@163.com> Date: Thu, 3 Aug 2023 21:01:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9D=9E=E4=BA=8B=E5=8A=A1?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/datasource/FlexDataSource.java | 3 --- .../spring/FlexSpringTransaction.java | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/FlexDataSource.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/FlexDataSource.java index 29c7472b..8dd60a95 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/FlexDataSource.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/FlexDataSource.java @@ -224,15 +224,12 @@ public class FlexDataSource extends AbstractDataSource { } private static class ConnectionHandler implements InvocationHandler { - private static final String[] proxyMethods = new String[]{"commit", "rollback", "close", "setAutoCommit"}; private final Connection original; private final String xid; public ConnectionHandler(Connection original, String xid) { - closeAutoCommit(original); - this.original = original; this.xid = xid; } diff --git a/mybatis-flex-spring/src/main/java/com/mybatisflex/spring/FlexSpringTransaction.java b/mybatis-flex-spring/src/main/java/com/mybatisflex/spring/FlexSpringTransaction.java index d06e5eda..2dd41369 100644 --- a/mybatis-flex-spring/src/main/java/com/mybatisflex/spring/FlexSpringTransaction.java +++ b/mybatis-flex-spring/src/main/java/com/mybatisflex/spring/FlexSpringTransaction.java @@ -16,6 +16,7 @@ package com.mybatisflex.spring; import com.mybatisflex.core.datasource.FlexDataSource; +import com.mybatisflex.core.transaction.TransactionContext; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; @@ -30,7 +31,7 @@ public class FlexSpringTransaction implements Transaction { DataSource dataSource; - boolean isTransaction; + boolean isTransaction =false; TransactionIsolationLevel level; boolean autoCommit; @@ -46,6 +47,10 @@ public class FlexSpringTransaction implements Transaction { @Override public Connection getConnection() throws SQLException { if (dataSource instanceof FlexDataSource) { + this.autoCommit = this.dataSource.getConnection().getAutoCommit(); + if ( TransactionContext.getXID() != null){ + isTransaction = true; + } return dataSource.getConnection(); }else{ throw new SQLException("The datasource must be FlextDataSource"); @@ -56,12 +61,17 @@ public class FlexSpringTransaction implements Transaction { @Override public void commit() throws SQLException { - getConnection().commit(); + if (!isTransaction && !autoCommit){ + getConnection().commit(); + } + } @Override public void rollback() throws SQLException { - getConnection().rollback(); + if (!isTransaction && !autoCommit){ + getConnection().rollback(); + } } @Override