mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix db bug
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
### 新特性
|
### 新特性
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
|
* 【db】 解决ThreadLocalConnection多数据源被移除问题(pr#66@Gitee)
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@@ -46,7 +46,8 @@ public enum ThreadLocalConnection {
|
|||||||
GroupedConnection groupedConnection = threadLocal.get();
|
GroupedConnection groupedConnection = threadLocal.get();
|
||||||
if (null != groupedConnection) {
|
if (null != groupedConnection) {
|
||||||
groupedConnection.close(ds);
|
groupedConnection.close(ds);
|
||||||
if(groupedConnection.removeAble()){
|
if (groupedConnection.isEmpty()) {
|
||||||
|
// 当所有分组都没有持有的连接时,移除这个分组连接
|
||||||
threadLocal.remove();
|
threadLocal.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -54,6 +55,8 @@ public enum ThreadLocalConnection {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 分组连接,根据不同的分组获取对应的连接,用于多数据源情况
|
* 分组连接,根据不同的分组获取对应的连接,用于多数据源情况
|
||||||
|
*
|
||||||
|
* @author Looly
|
||||||
*/
|
*/
|
||||||
public static class GroupedConnection {
|
public static class GroupedConnection {
|
||||||
|
|
||||||
@@ -85,14 +88,14 @@ public enum ThreadLocalConnection {
|
|||||||
*/
|
*/
|
||||||
public GroupedConnection close(DataSource ds) {
|
public GroupedConnection close(DataSource ds) {
|
||||||
final Connection conn = connMap.get(ds);
|
final Connection conn = connMap.get(ds);
|
||||||
if(null != conn) {
|
if (null != conn) {
|
||||||
try {
|
try {
|
||||||
if(false == conn.getAutoCommit()) {
|
if (false == conn.getAutoCommit()) {
|
||||||
//非自动提交事务的连接,不做关闭(可能处于事务中)
|
// 非自动提交事务的连接,不做关闭(可能处于事务中)
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
//ignore
|
// ignore
|
||||||
}
|
}
|
||||||
connMap.remove(ds);
|
connMap.remove(ds);
|
||||||
DbUtil.close(conn);
|
DbUtil.close(conn);
|
||||||
@@ -101,11 +104,13 @@ public enum ThreadLocalConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多数据源情况情况下判断是否能从上下文中删除
|
* 持有的连接是否为空
|
||||||
* @return
|
*
|
||||||
|
* @return 持有的连接是否为空
|
||||||
|
* @since 4.6.4
|
||||||
*/
|
*/
|
||||||
public boolean removeAble(){
|
public boolean isEmpty() {
|
||||||
return connMap.size()==0;
|
return connMap.isEmpty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user