Spring jdbctemplate执行插入语句获取id的方法

spring java 文章 2023-03-06 19:47 840 0 全屏看文

AI助手支持GPT4.0

您可以使用以下方法来获取插入数据的id: 

1. 使用JdbcTemplate的update方法,并将KeyHolder对象作为第二个参数传递,如下所示:

public int addPerson(Person person) {
   String sql = "INSERT INTO person(name, age) VALUES (?, ?)";
   KeyHolder keyHolder = new GeneratedKeyHolder();
   jdbcTemplate.update(connection -> {
       PreparedStatement ps = connection
               .prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
       ps.setString(1, person.getName());
       ps.setInt(2, person.getAge());
       return ps;
   }, keyHolder);
   return keyHolder.getKey().intValue();
}

2. 使用SimpleJdbcInsert类并调用executeAndReturnKey方法来将数据插入到表中,并返回自动生成的id,如下所示:

public int addPerson(Person person) {
    SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate)
            .withTableName("person")
            .usingGeneratedKeyColumns("id");
    Map<String, Object> parameters = new HashMap<>();
    parameters.put("name", person.getName());
    parameters.put("age", person.getAge());
    Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters));
    return key.intValue();
}


-EOF-

AI助手支持GPT4.0