public int sumByList(){ List<EnergyNaturalGas> list = energyNaturalGasMapper.selectEnergyNaturalGasList2(); Map<String, Map<String, BigDecimal>> groupByResult = list.stream() .collect( Collectors.groupingBy( EnergyNaturalGas::getTime, Collectors.groupingBy( EnergyNaturalGas::getProvideType, Collectors.reducing( BigDecimal.ZERO, EnergyNaturalGas::getEnergyNumber, BigDecimal::add ) ) ) ); groupByResult.forEach((time, provideTypeMap) -> { provideTypeMap.forEach((provideType, sumTotal) -> { EnergyNaturalGas provider = new EnergyNaturalGas(); provider.setTime(time); provider.setProvideType(provideType); provider.setMonthlySummary(sumTotal); energyNaturalGasMapper.updateEnergyNaturalGasByParm(provider); }); }); return 1; }