0

i am trying to get insertion id from postgres database. My code now looks like:

String sql = "INSERT INTO ACCOUNT (name) VALUES (?);";
        jdbcTemplate.update(sql, account.name);

id is generated automatically.

How should I change this code, that it would return the row id of the inserted account?

taskiukas
  • 83
  • 1
  • 10

1 Answers1

0

You can use SimpleJdbcInsert to insert values and get generated keys from operation.

public class JdbcActorDao implements ActorDao {

private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertActor;

public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
    this.insertActor = new SimpleJdbcInsert(dataSource)
            .withTableName("t_actor")
            .usingGeneratedKeyColumns("id");
}

public void add(Actor actor) {
    Map<String, Object> parameters = new HashMap<String, Object>(2);
    parameters.put("first_name", actor.getFirstName());
    parameters.put("last_name", actor.getLastName());
    Number newId = insertActor.executeAndReturnKey(parameters);
    actor.setId(newId.longValue());
 }  
}
EmberTraveller
  • 355
  • 3
  • 18