如何在spring行映射器类中处理多对象创建 private final parameteredRowMapper exportAllRowMapper=new parameteredRowMapper(){ 公共报表VO mapRow(结果集结果集,int rowNum) 抛出SQLException{ 试一试{ EmployeeVO employeeVObject=新EmployeeVO(); logger.debug(“exportAllRowMapper”); employeeVObject.setEmpid(resultSet.getString(“emp_ID”)); }

如何在spring行映射器类中处理多对象创建 private final parameteredRowMapper exportAllRowMapper=new parameteredRowMapper(){ 公共报表VO mapRow(结果集结果集,int rowNum) 抛出SQLException{ 试一试{ EmployeeVO employeeVObject=新EmployeeVO(); logger.debug(“exportAllRowMapper”); employeeVObject.setEmpid(resultSet.getString(“emp_ID”)); },spring,row,mapper,Spring,Row,Mapper,上面的代码将至少运行200k次,因此由于在堆内存中创建200k EmployeeVO对象而导致内存不足错误 有人能建议如何在spring row mapper类中处理对象创建吗?当然,内存中会有20万个对象,有或没有RowMapper,因为您告诉它将所有行解析为EmployeeVO。不要加载并处理所有行。您想对所有这些行做什么e行?要将所有详细信息导入excel。因此,迭代2次。因此,首先将每行转换为EmployeeVO,然后再次迭代完整列表以导出到excel。不要这样做,数据将永远无法放入内存

上面的代码将至少运行200k次,因此由于在堆内存中创建200k EmployeeVO对象而导致内存不足错误


有人能建议如何在spring row mapper类中处理对象创建吗?

当然,内存中会有20万个对象,有或没有
RowMapper
,因为您告诉它将所有行解析为
EmployeeVO
。不要加载并处理所有行。您想对所有这些行做什么e行?要将所有详细信息导入excel。因此,迭代2次。因此,首先将每行转换为
EmployeeVO
,然后再次迭代完整列表以导出到excel。不要这样做,数据将永远无法放入内存中。使用
RowCallbackHandler
直接将行写入excel工作表并跳过转换到
EmployeeVO
private final ParameterizedRowMapper<ReportsVO> exportAllRowMapper = new ParameterizedRowMapper<EmployeeVO>() {
    public ReportsVO mapRow(ResultSet resultSet, int rowNum)
        throws SQLException {
            try{
                EmployeeVO employeeVObject = new EmployeeVO();
                logger.debug(" exportAllRowMapper ");
                employeeVObject.setEmpid(resultSet.getString("emp_ID"));
            }