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);