From f5909818c39263b23a2b3358c3a6888029c4b855 Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 5 Jun 2026 20:49:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20`JdbcOperationSupport`=20=E4=B8=AD?= =?UTF-8?q?=E6=97=A0=E5=8F=82=E6=95=B0=20SQL=20=E6=94=B9=E7=94=A8=20`State?= =?UTF-8?q?ment`=20=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update、updateAndReturnKeys、queryInternal 三个方法根据是否有参数,分别走 PreparedStatement(有参数)或 Statement(无参数),避免无参数时不必要的预编译开销 --- .../xyz/zhouxy/jdbc/JdbcOperationSupport.java | 52 ++++++++++++++----- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java b/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java index a42acfe..8545e0d 100644 --- a/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java +++ b/src/main/java/xyz/zhouxy/jdbc/JdbcOperationSupport.java @@ -37,6 +37,8 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import xyz.zhouxy.plusone.commons.util.ArrayTools; + /** * JdbcOperationSupport * @@ -160,9 +162,16 @@ class JdbcOperationSupport { throws SQLException { assertConnectionNotNull(conn); assertSqlNotNull(sql); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - fillStatement(stmt, params); - return stmt.executeUpdate(); + if (ArrayTools.isNotEmpty(params)) { + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + fillStatement(stmt, params); + return stmt.executeUpdate(); + } + } + else { + try (Statement stmt = conn.createStatement()) { + return stmt.executeUpdate(sql); + } } } @@ -182,12 +191,23 @@ class JdbcOperationSupport { assertConnectionNotNull(conn); assertSqlNotNull(sql); assertRowMapperNotNull(rowMapper); - try (PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { - fillStatement(stmt, params); - stmt.executeUpdate(); - try (ResultSet generatedKeys = stmt.getGeneratedKeys()) { - final ResultHandler> resultHandler = ResultHandler.mapToList(rowMapper); - return resultHandler.handle(generatedKeys); + if (ArrayTools.isNotEmpty(params)) { + try (PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + fillStatement(stmt, params); + stmt.executeUpdate(); + try (ResultSet generatedKeys = stmt.getGeneratedKeys()) { + final ResultHandler> resultHandler = ResultHandler.mapToList(rowMapper); + return resultHandler.handle(generatedKeys); + } + } + } + else { + try (Statement stmt = conn.createStatement()) { + stmt.executeUpdate(sql); + try (ResultSet generatedKeys = stmt.getGeneratedKeys()) { + final ResultHandler> resultHandler = ResultHandler.mapToList(rowMapper); + return resultHandler.handle(generatedKeys); + } } } } @@ -288,9 +308,17 @@ class JdbcOperationSupport { @Nullable Object[] params, @Nonnull ResultHandler resultHandler) throws SQLException { - try (PreparedStatement stmt = createPreparedStatementInternal(conn, sql, params); - ResultSet rs = stmt.executeQuery()) { - return resultHandler.handle(rs); + if (ArrayTools.isNotEmpty(params)) { + try (PreparedStatement stmt = createPreparedStatementInternal(conn, sql, params); + ResultSet rs = stmt.executeQuery()) { + return resultHandler.handle(rs); + } + } + else { + try (Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + return resultHandler.handle(rs); + } } }