【发布时间】:2020-05-25 05:29:40
【问题描述】:
其实我用的是JDBCTemplate,它可以使用ParameterizedPreparedStatementSetter对象批量插入。
但是,当查询的参数很多时,在查询中设置参数是很不方便的。
在我的例子中,实际上,它有 44 个参数。
这是我的代码。
jdbcTemplate.batchUpdate(query.toString(), batchArgs, listSize,
new ParameterizedPreparedStatementSetter<DocUsageDTO>() {
@Override
public void setValues(PreparedStatement ps, DocUsageDTO arg) throws SQLException {
ps.setString(1, arg.getClientIp());
ps.setInt(2, arg.getClientOs());
ps.setString(3, arg.getClientOsVersion());
ps.setString(4, arg.getContentCode());
ps.setString(5, arg.getContentCreateTime());
ps.setString(6, arg.getContentName());
ps.setString(7, arg.getCurrentContentName());
ps.setString(8, arg.getDeptCode());
ps.setString(9, arg.getDeptName());
ps.setString(10, arg.getDomainCode());
ps.setString(11, arg.getEtc1());
ps.setString(12, arg.getEtc2());
ps.setString(13, arg.getEtc3());
ps.setString(14, arg.getEtc4());
ps.setString(15, arg.getEtc5());
ps.setString(16, arg.getFileSyncId());
ps.setString(17, arg.getFileSyncManagerCode());
ps.setString(18, arg.getFileSyncManagerName());
ps.setString(19, arg.getFileSyncRevisionNo());
ps.setString(20, arg.getFileSyncTagCode());
ps.setString(21, arg.getFileSyncTagName());
ps.setInt(22, arg.getLocationContext());
ps.setString(23, arg.getLogDate());
ps.setInt(24, arg.getLogType());
ps.setString(25, arg.getOwnerCode());
ps.setString(26, arg.getOwnerDeptCode());
ps.setString(27, arg.getOwnerDeptName());
ps.setString(28, arg.getOwnerName());
ps.setString(29, arg.getPositionCode());
ps.setString(30, arg.getPositionName());
ps.setString(31, arg.getProcessCode());
ps.setString(32, arg.getProcessName());
ps.setInt(33, arg.getProductType());
ps.setInt(34, arg.getPurpose());
ps.setInt(35, arg.getPurposeFailReason());
ps.setInt(36, arg.getPurposeStatus());
ps.setString(37, arg.getSecLevelCode());
ps.setString(38, arg.getSecLevelName());
ps.setString(39, arg.getUserCode());
ps.setString(40, arg.getUserName());
ps.setString(41, arg.getWriterCode());
ps.setString(42, arg.getWriterDeptCode());
ps.setString(43, arg.getWriterDeptName());
ps.setString(44, arg.getWriterName());
}
});
有没有更好的方法来优化使用ParameterizedPreparedStatementSetter设置参数的代码?
【问题讨论】:
标签: java jdbctemplate