方法一
jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", new Object[] {user.getId(), user.getName(), user.getSex(), user.getAge()});
方法二
final String id = user.getId();
final String name = user.getName();
final String sex = user.getSex() + "";
final int age = user.getAge();
jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)",
new PreparedStatementSetter() {
public void setValues(PreparedStatement ps) throws SQLException {
ps.setString(1, id);
ps.setString(2, name);
ps.setString(3, sex);
ps.setInt(4, age);
}
});
方法三
实现implements RowMapper接口,详见前面的文章
效率上基本没有区别,方法一最终还是要掉方法二来进行实现,只不过在方法一传的参数数组进去,方法一会帮你构造一个PreparedStatementSetter,然后调用方法二进行执行,所以有中间这个构造过程,如果对效率要求特别高,那就用方法二了
方法一源码:
public int update(String sql, Object... args) throws DataAccessException {
return update(sql, newArgPreparedStatementSetter(args));//这个被调用的方法就是方法二了
}
protected PreparedStatementSetter newArgPreparedStatementSetter(Object[] args) {
return new ArgPreparedStatementSetter(args);
}