要点
KeyHolder 这个类就是用来获取主键的值的
key:键
holder:持有人、所有人
代码举例
1.
public NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void insert(){
String insertSql = "insert into user(name,age) values (:name,:age)";
User user = new User();
user.setName("test");
user.setAget(18);
KeyHolder keyHolder = new GeneratedKeyHolder();
int insertResult = namedParameterJdbcTemplate.update(insertSql, new BeanPropertySqlParameterSource(user), keyHolder);
int userId = keyHolder.getKey().longValue();
}
2.
final String sqlSave = sql.toString();
final List<Object> argsSave = args;
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(sqlSave, Statement.RETURN_GENERATED_KEYS);
for (int i = 0; i < argsSave.size(); i++) {
ps.setObject(i + 1, argsSave.get(i));
}
return ps;
}
}, keyHolder);
code = String.valueOf(keyHolder.getKey().intValue());