Spring JdbcTemplate利用GeneratedKeyHolder提供了一个方法,可以实现在插入一条记录时,返回自增主键的id
int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)
利用GeneratedKeyHolder接口中的方法getKey()
即可获取自增主键ID,getKey()
方法的返回值是Numer类型的,可以根据自己的需求转化为自己想要的类型
//添加博客,并返回新增博客的id
public int addBlog(Blog blog) {
KeyHolder keyHolder = new GeneratedKeyHolder();
String sql = "insert into blog(blogger_id,title,content,blog_type) values (?,?,?,?)";
PreparedStatementCreator preparedStatementCreator = con -> {
PreparedStatement ps = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setInt(1,blog.getBlogger_id());
ps.setString(2,blog.getTitle());
ps.setString(3,blog.getContent());
return ps;
};
template.update(preparedStatementCreator, keyHolder);
int bloggerId = keyHolder.getKey().intValue();//获取最终插入的自增的id
return bloggerId;
}