使用 java 8 stream API 方式处理jdbc query,在数据迁移时,如果需要全表读取数据,当数据量较大时,不可能一次性全部读取,同时如果使用分页的方式,随着分页越深,性能越差,因此可以尝试使用流式API来处理此类业务。基本用法是
String sql="select column from table";
DataSource dataSource; // 数据源
Function<ResultSet, R> rowMapper; // 数据库字段转换成实体的转换器类
Stream stream=Jdbcs.query(dataSource,sql, rowMapper); // 此时还没有实际查询数据库,只有stream的终端方法调用时才会去查询数据库
接下来就是java 8 stream的操作了。
github地址:https://github.com/wuda0112/common-utils/blob/master/src/main/java/com/wuda/jdbc/Jdbcs.java