import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
public void updateMaterialForQM(final MaterialProxy materialProxy) throws Exception {
jdbcTemplate.getJdbcOperations().update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
StringBuilder sql = new StringBuilder("update riv_material set");
if (null != materialProxy.getRivMaterial().getMatCode()) {
sql.append(" mat_code = ?,");
}
if (null != materialProxy.getRivMaterial().getMatName()) {
sql.append(" mat_name = ?,");
}
if (-1 == sql.indexOf("?")) {
return null;
}
String finalSql = sql.substring(0, sql.length() - 1) + " where mat_id = ?";
CommonMethodHelper.showDebugLogger(logger, finalSql);
PreparedStatement ps = con.prepareStatement(finalSql);
int i = 1;
if (StringUtil.isNotBlank(materialProxy.getRivMaterial().getMatCode())) {
ps.setString(i, materialProxy.getRivMaterial().getMatCode());
i++;
}
if (null != materialProxy.getRivMaterial().getMatName()) {
ps.setString(i, materialProxy.getRivMaterial().getMatName());
i++;
}
ps.setInt(i, materialProxy.getRivMaterial().getMatId());
return ps;
}
});
}
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
private void updateMaterialOPForQM(MaterialProxy materialProxy) throws Exception {
if (CommonMethodHelper.isCollectionValid(materialProxy.getRivMaterialOptions())) {
int size = materialProxy.getRivMaterialOptions().size();
Object[] objects = new Object[size];
for (int i = 0; i < size; i++) {
RivMaterialOption mto = materialProxy.getRivMaterialOptions().get(i);
objects[i] = new Object[] {
mto.getMtoOptionValue(), materialProxy.getRivMaterial().getMatId(), mto.getMtoCode()};
}
batchUpdateNotAutoCommit("update riv_material_option set mto_option_value = ? where mto_material_id = ? and mto_code = ?;", size, objects);
}
}
/***
* 批量更新 (不自动提交事务)
* @param sql
* @param updateCount
* @param paramValue
* @return
* @throws Exception
*/
@Override
public int[] batchUpdateNotAutoCommit(String sql, final int updateCount, final Object... paramValue) throws Exception {
BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
@Override
public int getBatchSize() {
return updateCount;
}
@Override
public void setValues(PreparedStatement ps, int index) throws SQLException {
// 设置参数值
Object[] object = (Object[]) paramValue[index];
for (int j = 0; j < object.length; j++) {
ps.setObject(j + 1, object[j]);
}
}
};
int[] results = jdbcTemplate.getJdbcOperations().batchUpdate(sql, setter);
return results;
}
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.getJdbcOperations().update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
return buildOutNotceHeaderPS(onh, con);
}
}, keyHolder);