JDBC流式查询
所属分类 java
浏览量 26
JDBC 流式查询是解决大表导出/大结果集读取的关键,
默认JDBC会把全表数据加载到内存,数据量大直接 OOM(内存溢出)。
流式查询的本质:
不加载全部数据到内存,数据库边发,Java 边读,一次只处理一行。
JDBC流式查询 = 关闭自动提交 + FORWARD_ONLY + 只读 + fetchSize=Integer.MIN_VALUE
// 1. 关闭自动提交
conn.setAutoCommit(false);
String sql = "SELECT * FROM big_table";
// 2. 创建 Statement 指定类型
try (PreparedStatement pstmt = conn.prepareStatement(sql,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY)) {
// 3. 设置 fetchSize = Integer.MIN_VALUE
pstmt.setFetchSize(Integer.MIN_VALUE);
// 4. 执行查询
try (ResultSet rs = pstmt.executeQuery()) {
// 逐行读取,内存永远只存 1 行数据
while (rs.next()) {
// 处理当前行
}
}
}
上一篇
下一篇
《用心带孩子:为人父母不可不知的十门必修课》笔记
Docker 网络 面试题及答案
hutool 数据源创建
docker容器内访问宿主机文件
Java应用镜像不同架构的区别
Docker Compose Java 应用 command 多行参数示例