|
|
|
@ -2,6 +2,8 @@ package com.spring.modules.report.dao.impl; |
|
|
|
|
|
|
|
|
|
|
|
import com.spring.modules.report.dao.ProcedureDao; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.dao.DataAccessException; |
|
|
|
import org.springframework.jdbc.core.CallableStatementCallback; |
|
|
|
@ -25,12 +27,17 @@ import java.util.*; |
|
|
|
@Repository |
|
|
|
public class ProcedureDaoImpl implements ProcedureDao { |
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(ProcedureDaoImpl.class); |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private JdbcTemplate jdbcTemplate; |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<Map<String, Object>> getProcedureData(String procedureName, List<Object> params) { |
|
|
|
return jdbcTemplate.execute(new CallableStatementCreator() { |
|
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
log.info("Stored procedure call started. name={}, params={}", procedureName, params); |
|
|
|
try { |
|
|
|
List<Map<String, Object>> resultList = jdbcTemplate.execute(new CallableStatementCreator() { |
|
|
|
|
|
|
|
@Override |
|
|
|
public CallableStatement createCallableStatement(Connection con) throws SQLException { |
|
|
|
@ -64,6 +71,7 @@ public class ProcedureDaoImpl implements ProcedureDao { |
|
|
|
} |
|
|
|
return cs; |
|
|
|
} |
|
|
|
|
|
|
|
}, new CallableStatementCallback<List<Map<String, Object>> >() { |
|
|
|
|
|
|
|
@Override |
|
|
|
@ -89,10 +97,31 @@ public class ProcedureDaoImpl implements ProcedureDao { |
|
|
|
return resultList; |
|
|
|
} |
|
|
|
}); |
|
|
|
log.info( |
|
|
|
"Stored procedure call finished. name={}, durationMs={}, resultCount={}, result={}", |
|
|
|
procedureName, |
|
|
|
System.currentTimeMillis() - startTime, |
|
|
|
resultList == null ? 0 : resultList.size(), |
|
|
|
resultList |
|
|
|
); |
|
|
|
return resultList; |
|
|
|
} catch (Exception e) { |
|
|
|
log.error( |
|
|
|
"Stored procedure call failed. name={}, params={}, durationMs={}, error={}", |
|
|
|
procedureName, |
|
|
|
params, |
|
|
|
System.currentTimeMillis() - startTime, |
|
|
|
e.getMessage(), |
|
|
|
e |
|
|
|
); |
|
|
|
throw e; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void execProduceData(String procedureName, List<Object> params) { |
|
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
log.info("Stored procedure execute started. name={}, params={}", procedureName, params); |
|
|
|
StringBuilder sql = new StringBuilder("EXEC "+procedureName+" "); |
|
|
|
//拼好sql语句 |
|
|
|
for(int i = 0; i < params.size(); i++) { |
|
|
|
@ -103,7 +132,25 @@ public class ProcedureDaoImpl implements ProcedureDao { |
|
|
|
sql.append("'" + params.get(i) + "', "); |
|
|
|
} |
|
|
|
} |
|
|
|
try { |
|
|
|
jdbcTemplate.execute(sql.toString()); |
|
|
|
log.info( |
|
|
|
"Stored procedure execute finished. name={}, durationMs={}, sql={}", |
|
|
|
procedureName, |
|
|
|
System.currentTimeMillis() - startTime, |
|
|
|
sql |
|
|
|
); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error( |
|
|
|
"Stored procedure execute failed. name={}, params={}, durationMs={}, error={}", |
|
|
|
procedureName, |
|
|
|
params, |
|
|
|
System.currentTimeMillis() - startTime, |
|
|
|
e.getMessage(), |
|
|
|
e |
|
|
|
); |
|
|
|
throw e; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |