今天项目中遇到了需要返回插入数据的id 的一项业务(数据库id自动增长),数据库连接使用spring jdbctemplate,网上查了一下发现结合spring使用的比较少,所以记录下我的实现方法:
final Star star = getStarInfo();
KeyHolder keyHolder = new GeneratedKeyHolder();
row = this.jt.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con)
throws SQLException {
PreparedStatement ps = con.prepareStatement("insert into `star`(`stype`,`name`) values (?,?)",
Statement.RETURN_GENERATED_KEYS);
ps.setInt(1, star.getStype());
ps.setString(2, star.getName());
return ps;
}
}, keyHolder);
// 获取插入记录的id
Long generatedId = keyHolder.getKey().longValue();
这里的generatedId 就是刚刚插入那条记录的ID. 注意Statement.RETURN_GENERATED_KEYS一定要加上.