From aeb57dcdbae3ef3a8d07530c6a10163962927e2c Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Wed, 17 Jun 2026 15:09:54 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=B0=86=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=80=BB=E8=BE=91=E5=86=85=E5=8C=96=E5=88=B0?= =?UTF-8?q?=20BatchUpdateResult=20=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BatchUpdateResult 新增 quietly 字段,由 recordErrorBatch() 自行判断 状态设置为 INTERRUPTED 或 COMPLETED_WITH_ERRORS - 移除 interrupt() 方法,消除 recordErrorBatch → interrupt 的时序耦合 - 外部调用方仅需 break 控制循环,不再干预结果对象的状态流转 --- .../xyz/zhouxy/jdbc/BatchUpdateResult.java | 22 +++++++++++-------- .../xyz/zhouxy/jdbc/JdbcOperationSupport.java | 5 ++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/xyz/zhouxy/jdbc/BatchUpdateResult.java b/src/main/java/xyz/zhouxy/jdbc/BatchUpdateResult.java index 82f64a3..b138a65 100644 --- a/src/main/java/xyz/zhouxy/jdbc/BatchUpdateResult.java +++ b/src/main/java/xyz/zhouxy/jdbc/BatchUpdateResult.java @@ -51,6 +51,11 @@ public class BatchUpdateResult { */ private final int batchSize; + /** + * 是否静默模式 + */ + private final boolean quietly; + /** * 本次分批更新的状态 */ @@ -75,10 +80,11 @@ public class BatchUpdateResult { */ private int completeBatchCount; - BatchUpdateResult(int total, int batchCount, int batchSize) { + BatchUpdateResult(int total, int batchCount, int batchSize, boolean quietly) { this.total = total; this.batchCount = batchCount; this.batchSize = batchSize; + this.quietly = quietly; this.allUpdateCounts = new HashMap<>(batchCount); this.allErrorsInfo = new HashMap<>(batchCount); @@ -101,17 +107,15 @@ public class BatchUpdateResult { this.allUpdateCounts.put(batchIndex, updateCounts); this.allErrorsInfo.put(batchIndex, new BatchUpdateErrorInfo(batchIndex, cause)); if (this.status == BatchUpdateStatus.SUCCESS) { - this.status = BatchUpdateStatus.COMPLETED_WITH_ERRORS; + if (this.quietly) { + this.status = BatchUpdateStatus.COMPLETED_WITH_ERRORS; + } + else { + this.status = BatchUpdateStatus.INTERRUPTED; + } } } - /** - * 中断 - */ - void interrupt() { - this.status = BatchUpdateStatus.INTERRUPTED; - } - /** * 获取指定批次更新结果 * diff --git a/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java b/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java index 0a79b36..a63d2f8 100644 --- a/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java +++ b/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java @@ -232,13 +232,13 @@ class JdbcOperationSupport { assertSqlNotNull(sql); checkArgument(batchSize > 0, "The batch size must be greater than 0."); if (params == null || params.isEmpty()) { - return new BatchUpdateResult(0, 0, batchSize); + return new BatchUpdateResult(0, 0, batchSize, quietly); } final int paramsSize = params.size(); final int batchCount = (paramsSize + batchSize - 1) / batchSize; - final BatchUpdateResult result = new BatchUpdateResult(paramsSize, batchCount, batchSize); + final BatchUpdateResult result = new BatchUpdateResult(paramsSize, batchCount, batchSize, quietly); try (PreparedStatement stmt = conn.prepareStatement(sql)) { // 表示第几条数据,1, 2, 3, ..., paramsSize @@ -263,7 +263,6 @@ class JdbcOperationSupport { final int[] updateCounts = getUpdateCountsOnError(indexInBatch, e); result.recordErrorBatch(batchIndex, updateCounts, e); if (!quietly) { - result.interrupt(); break; } }