又回到后台开发了,又要写sql语句了,今天就先写下Mysql批量更新吧,刚好用到,采用spring的JdbcTemplate。
MySQL批量更新:
1、jdbcTemplate.batchUpdate
public void verifyZFJs(final String idsStr,final int type) {
final String sql = "update ofzfjxxb set shjg = ? where zfjid = ?";
final String[] ids = idsStr.split(",");
cihiJdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int index) throws SQLException {
ps.setInt(1, type);
ps.setString(2, ids[index]);
}
@Override
public int getBatchSize() {
return ids.length;
}
});
}
哎,就先写这一个吧,不在状态。。。
该方法底层实现还是使用的ps.executeBatch(),所以还是直接使用executeBatch()吧!
2、update返回主键
final String INSERT_SQL = "insert into gtable(username,callback) values(?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(
Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL,
new String[] { "id" });
ps.setString(1, request.getUsername());
ps.setString(2, request.getCallback());
return ps;
}
}, keyHolder);
logger.debug("id:" + keyHolder.getKey()+"long:"+keyHolder.getKey().longValue());