首页  

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 多行参数示例