批量插入
public void addCompensateDetail(final Compensate compensate, final List<ChannelPaymentVoForsearch> channelPaymentVoList) {
logger.info("-----------【增加赔付金明细Dao开始】------------------");
Session currentSession = this.getSessionFactory().getCurrentSession();
for (int i = 0; i < channelPaymentVoList.size(); i++) {
ChannelPaymentVoForsearch channelPaymentVo = channelPaymentVoList.get(i);
Long conId = channelPaymentVo.getConId();// 取出合同号
Query q = currentSession.createQuery(
"from LoanPhaseChannel loanPhaseChannel where loanPhaseChannel.conId = :param and loanPhaseChannel.phaseCompensateStatus = :phaseCompensateStatus "); // 不重要
q.setParameter("param", conId);
q.setParameter("phaseCompensateStatus", 1);
@SuppressWarnings("unchecked")
final List<LoanPhaseChannel> loanPhaseChannelList = (List<LoanPhaseChannel>) q.list();// 查询出合同对应的待赔付还款计划数据
long startTime = System.currentTimeMillis(); // 获取开始时间
String sql = "INSERT INTO `ECMS_COMPENSATE_DETAIL` ( `COM_ID`, `PHASE_ID`, `SETTLE_ID`, `COM_DETAIL_VERSION`, `CREATOR`, `CREATE_TIME`, `UPDATER`, `UPDATE_TIME`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?);";
BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int j) throws SQLException {
LoanPhaseChannel loanPhaseChannel = (LoanPhaseChannel) loanPhaseChannelList.get(j);
ps.setLong(1, compensate.getComId());
ps.setLong(2, loanPhaseChannel.getPhaseId());
ps.setLong(3, compensate.getSettleId());
ps.setLong(4, Long.valueOf("1"));
ps.setString(5, compensate.getCreator());
ps.setDate(6, compensate.getCreateTime() == null ?null:new Date(compensate.getCreateTime().getTime()));
ps.setString(7, compensate.getUpdater());
ps.setDate(8, compensate.getUpdateTime() == null ?null :new Date(compensate.getUpdateTime().getTime()));
}
@Override
public int getBatchSize() {
return loanPhaseChannelList.size();
}
};
jdbcTemplate.batchUpdate(sql, setter);
long endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("【增加赔付金明细后台运行时间】:" + (endTime - startTime) + "ms");
}
logger.info("-----------【增加赔付金明细Dao结束】------------------");
}