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
}