Refine search
KeyHolder holder = new GeneratedKeyHolder(); getJdbcTemplate().update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(sql.toString(), Statement.RETURN_GENERATED_KEYS); ps.setString(1, person.getUsername()); ps.setString(2, person.getPassword()); ps.setString(3, person.getEmail()); ps.setLong(4, person.getRole().getId()); return ps; } }, holder); Long newPersonId = holder.getKey().longValue();
private boolean insertGroupCapacity(final String sql, final GroupCapacity capacity) { try { GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder(); PreparedStatementCreator preparedStatementCreator = new PreparedStatementCreator() { @Override return generatedKeyHolder.getKey() != null; } catch (CannotGetJdbcConnectionException e) { fatalLog.error("[db-error]", e);
final String INSERT_SQL = "insert into my_test (name) values(?)"; final String name = "Rob"; KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update( new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] {"id"}); ps.setString(1, name); return ps; } }, keyHolder); // keyHolder.getKey() now contains the generated key
@Test public void testUpdateAndGeneratedKeys() throws SQLException { given(resultSetMetaData.getColumnCount()).willReturn(1); given(resultSetMetaData.getColumnLabel(1)).willReturn("1"); given(resultSet.getMetaData()).willReturn(resultSetMetaData); given(resultSet.next()).willReturn(true, false); given(resultSet.getObject(1)).willReturn(11); given(preparedStatement.executeUpdate()).willReturn(1); given(preparedStatement.getGeneratedKeys()).willReturn(resultSet); given(connection.prepareStatement(INSERT_GENERATE_KEYS, PreparedStatement.RETURN_GENERATED_KEYS) ).willReturn(preparedStatement); GeneratedKeysUpdater pc = new GeneratedKeysUpdater(); KeyHolder generatedKeyHolder = new GeneratedKeyHolder(); int rowsAffected = pc.run("rod", generatedKeyHolder); assertEquals(1, rowsAffected); assertEquals(1, generatedKeyHolder.getKeyList().size()); assertEquals(11, generatedKeyHolder.getKey().intValue()); verify(preparedStatement).setString(1, "rod"); verify(resultSet).close(); }
@SuppressWarnings("unchecked") private static <T> AffectedRowCountAndKey<T> executeUpdateAndKeepKeys( String template, Method method, NamedParameterJdbcTemplate jdbc, SqlParameterSource parameters) { Class<T> keyClass = (Class<T>) ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments()[0]; KeyHolder keyHolder = new GeneratedKeyHolder(); int result = jdbc.update(template, parameters, keyHolder); Map<String, Object> keys = keyHolder.getKeys(); Object key; if (keys.size() > 1) { AutoGeneratedKey spec = Objects.requireNonNull(withType(method.getDeclaredAnnotations(), AutoGeneratedKey.class), "more than one key for query " + template + ": annotation @AutoGeneratedKey required"); key = Objects.requireNonNull(keys.get(spec.value()), "the key with name " + spec.value() + " has returned null for query " + template + ": required a non null key"); } else if (Number.class.isAssignableFrom(keyClass)) { Class<? extends Number> c = (Class<? extends Number>) keyClass; return new AffectedRowCountAndKey<>(result, (T) NumberUtils.convertNumberToTargetClass(keyHolder.getKey(), c)); } else { key = keys.values().iterator().next(); } return new AffectedRowCountAndKey<>(result, keyClass.cast(key)); }
logger.debug("The following parameters are used for call " + getInsertString() + " with: " + values); final KeyHolder keyHolder = new GeneratedKeyHolder(); Map<String, Object> keys = new HashMap<>(2); keys.put(getGeneratedKeyNames()[0], key); keyHolder.getKeyList().add(keys); long key = rs.getLong(1); keys.put(getGeneratedKeyNames()[0], key); keyHolder.getKeyList().add(keys);
private Object getIdKey(GeneratedKeyHolder keyHolder, String name) { List<Map<String, Object>> keyList = keyHolder.getKeyList(); if (keyList.size() == 0) return null; if (keyList.size() > 1) throw new InvalidDataAccessApiUsageException("Multiple key records returned from insert"); return keyList.get(0).get(name); } }
final String INSERT_SQL = "insert into my_test (name) values(?)"; final String name = "Rob"; KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update( new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] {"id"}); ps.setString(1, name); return ps; } }, keyHolder); // keyHolder.getKey() now contains the generated key
@Override public int execute(String sql, DataSource dataSource, Context context) throws SQLException { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); GetGeneratedKeys getGeneratedKeys = new GetGeneratedKeys(); PreparedStatementCreator preparedStatementCreator = getPreparedStatementCreator( sql, dataSource, context,getGeneratedKeys); if (getGeneratedKeys.isGetGeneratedKeys()) { KeyHolder generatedKeyHolder = new GeneratedKeyHolder(); int count = jdbcTemplate.update(preparedStatementCreator, generatedKeyHolder); if (!generatedKeyHolder.getKeyList().isEmpty()) { context.put(GENERATE_KEY, generatedKeyHolder.getKey()); } return count; } return jdbcTemplate.update(preparedStatementCreator); }
KeyHolder keyHolder = new GeneratedKeyHolder(); this.jdbcOperations.update(this.updateSql, this.sqlParameterSourceFactory.createParameterSource(message), keyHolder); return keyHolder.getKeyList();
private Object getIdKey(GeneratedKeyHolder keyHolder) { List<Map<String, Object>> keyList = keyHolder.getKeyList(); if (keyList.size() == 0) return null; if (keyList.size() > 1) throw new InvalidDataAccessApiUsageException("Multiple key records returned from insert"); Map<String, Object> keys = keyList.get(0); if (keys.size() == 0) return null; if (keys.size() == 1) return keys.values().iterator().next(); // Look for "id" Object key = keys.get("id"); if (key == null) key = keys.get("ID"); if (key == null) throw new InvalidDataAccessApiUsageException("No obvious id field found in keys: " + keys); return key; }
@Override public long insertNew(ProduceMessage message) { KeyHolder holder = new GeneratedKeyHolder(); String json = this.gson.toJson(message.getBase()); platform.update(this.insertStatementFactory.newPreparedStatementCreator(new Object[]{json, new Timestamp(System.currentTimeMillis())}), holder); message.setRouteKey(routerSelector.getRouteKey(platform.getDataSource())); return holder.getKey().longValue(); }
+ "gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE tenant_id=?;"; try { GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder(); PreparedStatementCreator preparedStatementCreator = new PreparedStatementCreator() { @Override return generatedKeyHolder.getKey() != null; } catch (CannotGetJdbcConnectionException e) { fatalLog.error("[db-error]", e);
public class GeneratedKeyHolderFactory implements KeyHolderFactory { public KeyHolder newKeyHolder() { return new GeneratedKeyHolder(); } }
order.money = orderMoney; KeyHolder keyHolder = new GeneratedKeyHolder(); order.id = keyHolder.getKey().longValue();
@Override public long createSource(final LogSource<? extends LogRawAccess<? extends LogInputStream>> source) { final GeneratedKeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new LogSourceCreator(source, true), keyHolder); final long id = keyHolder.getKey().longValue(); return id; }
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.support.KeyHolder; // stuff... KeyHolder generatedKeyHolder = new GeneratedKeyHolder(); // Execute the update namedJdbcTemplate.update(sqlQuery, params, generatedKeyHolder); // Retrieve the map of ALL the autoincremented fields in the table // Just get the desired one by field name Integer idpms = (Integer) generatedKeyHolder.getKeys().get("idpms"); // use idbpms as parameter for your next query...
order.money = orderMoney; KeyHolder keyHolder = new GeneratedKeyHolder(); order.id = (long) keyHolder.getKey();
@Override public long insertForLastId(final String sql, final StatementParameter param) { GeneratedKeyHolder keyHolder = new GeneratedKeyHolder(); this.getJdbcTemplate().update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement pstmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); param.setValues(pstmt); return pstmt; } }, keyHolder); return keyHolder.getKey().longValue(); }
final String INSERT_SQL = "insert into my_test (name) values(?)"; final String name = "Rob"; KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update( new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] {"id"}); ps.setString(1, name); return ps; } }, keyHolder); // keyHolder.getKey() now contains the generated key