diff --git a/hutool-db/pom.xml b/hutool-db/pom.xml index eec202c0d..7d227dd77 100755 --- a/hutool-db/pom.xml +++ b/hutool-db/pom.xml @@ -9,7 +9,7 @@ cn.hutool hutool-parent - 5.8.39-SNAPSHOT + 5.8.38 hutool-db diff --git a/hutool-db/src/main/java/cn/hutool/db/DbUtil.java b/hutool-db/src/main/java/cn/hutool/db/DbUtil.java index f96fbed9a..fb6b1d685 100644 --- a/hutool-db/src/main/java/cn/hutool/db/DbUtil.java +++ b/hutool-db/src/main/java/cn/hutool/db/DbUtil.java @@ -251,4 +251,12 @@ public final class DbUtil { public static void setDbSettingPathGlobal(String dbSettingPath) { GlobalDbConfig.setDbSettingPath(dbSettingPath); } + + /** + * 设置构造结果集时每次从数据库取到的行数 + * @param fetchSize 每一轮网络请求获取的行数 + */ + public static void setStatementFetchSizeGlobal(Integer fetchSize){ + GlobalDbConfig.setStatementFetchSize(fetchSize); + } } diff --git a/hutool-db/src/main/java/cn/hutool/db/GlobalDbConfig.java b/hutool-db/src/main/java/cn/hutool/db/GlobalDbConfig.java index 0c3ba4ba2..6df88544f 100644 --- a/hutool-db/src/main/java/cn/hutool/db/GlobalDbConfig.java +++ b/hutool-db/src/main/java/cn/hutool/db/GlobalDbConfig.java @@ -36,6 +36,10 @@ public class GlobalDbConfig { * @since 5.8.0 */ private static String dbSettingPath = null; + /** + * 自定义构造结果集时每次从数据库取的行数 + */ + protected static Integer statementFetchSize=null; /** * 设置全局是否在结果中忽略大小写
@@ -119,4 +123,12 @@ public class GlobalDbConfig { public static void setShowSql(boolean isShowSql, boolean isFormatSql, boolean isShowParams, Level level) { SqlLog.INSTANCE.init(isShowSql, isFormatSql, isShowParams, level); } + + /** + * 设置构造结果集时每次从数据库取到的行数 + * @param statementFetchSize 每一轮网络请求获取的行数 + */ + public static void setStatementFetchSize(Integer statementFetchSize) { + GlobalDbConfig.statementFetchSize = statementFetchSize; + } } diff --git a/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java b/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java index 3b5a87622..cabb9a1ec 100644 --- a/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java +++ b/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java @@ -151,6 +151,7 @@ public class StatementUtil { } else { ps = conn.prepareStatement(sql); } + setFetchSize(ps); return fillParams(ps, params); } @@ -189,6 +190,7 @@ public class StatementUtil { fillParams(ps, new ArrayIter<>(params), nullTypeMap); ps.addBatch(); } + setFetchSize(ps); return ps; } @@ -215,6 +217,7 @@ public class StatementUtil { fillParams(ps, CollUtil.valuesOfKeys(entity, fields), nullTypeMap); ps.addBatch(); } + setFetchSize(ps); return ps; } @@ -392,5 +395,15 @@ public class StatementUtil { // 其它参数类型 ps.setObject(paramIndex, param); } + + /** + * 为{@link PreparedStatement} 设置FetchSize + * @param ps {@link PreparedStatement} + * @throws SQLException SQL异常 + */ + private static void setFetchSize(PreparedStatement ps) throws SQLException { + if(GlobalDbConfig.statementFetchSize!=null) + ps.setFetchSize(GlobalDbConfig.statementFetchSize); + } //--------------------------------------------------------------------------------------------- Private method end }