При добавлении новой записи в таблицу часто бывает нужно узнать id вставленной записи. Сам id чаще всего является автоинкрементым (bigserial в PostgreSQL, AUTO_INCREMENT в MySQL). Чтобы узнать этот id только что добавленной записи нужно использовать вариант метода update в jdbcTemplate с параметрами PreparedStatementCreator и KeyHolder. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement( Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("insert" + " into availabilities(org_id, person_id, " + " not_avail_from, not_avail_to)" + " values (?, ?, ?, ?)", new String[] { "id" }); ps.setLong(1, orgId); ps.setLong(2, availability.getEmployeeId()); ps.setDate(3, new java.sql.Date(availability .getNotAvailFrom().getMillis())); ps.setDate(4, new java.sql.Date(availability .getNotAvailTo().getMillis())); return ps; } }, keyHolder); LOG.debug("inserted availability id = {}.", keyHolder.getKey()); availability.setId(keyHolder.getKey().longValue()); |