我已将org.springframework.jdbc.object.StoredProcedure
扩展为调用oracle程序,但我面临严重的性能问题。请建议获得良好表现的最佳方法。
我认为BeanPropertyRowMapper
花了很多时间将光标输出映射到bean。
按程序-2469返回总记录。
sql developer中的执行时间 - 1s
在java大约1.2分钟的执行时间。
public class TestingChart extends StoredProcedure{
public TestingChart(DataSource dataSource) {
super(dataSource, DbSubseaConstants.PKG_TEST_FATCHART_PRC);
declareParameter(new SqlParameter(DbSubseaConstants.MASTER_TEST_ID,OracleTypes.NUMBER));
declareParameter(new SqlOutParameter(DbSubseaConstants.GET_REPORT_C2, OracleTypes.CURSOR,
new BeanPropertyRowMapper<FATChart>(FATChart.class)));
declareParameter(new SqlOutParameter(DbSubseaConstants.PO_ERROR_MESSAGE,java.sql.Types.VARCHAR));
compile();
}
@Override
public Map<String, Object> execute(Map<String, ?> inputs) {
Map<String, Object> output = null;
Map<String, Object> inputsParams = new HashMap<String, Object>();
Long masterTestId = (Long) inputs.get(DbSubseaConstants.MASTER_TEST_ID);
inputsParams.put(DbSubseaConstants.MASTER_TEST_ID, masterTestId);
output = super.execute(inputsParams);
return output;
}
}