server层
Cursor<Map<String, Object>> mapCursor = tableService.getStreamDataByTableName(tableName)
mapper
Cursor<Map<String, Object>> getStreamDataByTableName(@Param("tableName") String tableName);
<select id="getStreamDataByTableName" resultType="map" fetchSize="100"> select * from ${tableName} </select>
注意:fetchSize是一次读的数据,oracle默认是20条,如果数据库有100万条数据,一次读取到内存中,jvm内存就挂了,分配读取有个函数插上是否已经完,mapCursor.isConsumed(),读完后可以做其他逻辑业务
只有ojdbc7才支持,其他版本报错
Method oracle/jdbc/driver/OraclePreparedStratementWrapper.closeOnCompletion() V is abstract
<!--<dependency>-->
<!--<groupId>com.oracle</groupId>-->
<!--<artifactId>ojbdc6</artifactId>-->
<!--<version>11.2.0.1.0</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>