/** * Delegate method to execute the insert, generating a single key. */ private Number executeInsertAndReturnKeyInternal(final List<?> values) { KeyHolder kh = executeInsertAndReturnKeyHolderInternal(values); if (kh.getKey() != null) { return kh.getKey(); } else { throw new DataIntegrityViolationException( "Unable to retrieve the generated key for the insert: " + getInsertString()); } }
@Test public void singleKey() { kh.getKeyList().addAll(singletonList(singletonMap("key", 1))); assertEquals("single key should be returned", 1, kh.getKey().intValue()); }
@Test public void multipleKeys() { Map<String, Object> m = new HashMap<String, Object>() {{ put("key", 1); put("seq", 2); }}; kh.getKeyList().addAll(singletonList(m)); assertEquals("two keys should be in the map", 2, kh.getKeys().size()); exception.expect(InvalidDataAccessApiUsageException.class); exception.expectMessage(startsWith("The getKey method should only be used when a single key is returned.")); kh.getKey(); }
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();
@Test public void singleKeyNonNumeric() { kh.getKeyList().addAll(singletonList(singletonMap("key", "1"))); exception.expect(DataRetrievalFailureException.class); exception.expectMessage(startsWith("The generated key is not of a supported numeric type.")); kh.getKey().intValue(); }
@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(); }
@Test public void noKeyReturnedInMap() { kh.getKeyList().addAll(singletonList(emptyMap())); exception.expect(DataRetrievalFailureException.class); exception.expectMessage(startsWith("Unable to retrieve the generated key.")); kh.getKey(); }
order.id = keyHolder.getKey().longValue();
@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(); }
order.id = (long) keyHolder.getKey();
Number nu = keyHolder.getKey(); if (nu == null) { throw new IllegalArgumentException("insert config_info fail");
public Long save(final byte[] blob) { KeyHolder keyHolder = new GeneratedKeyHolder(); String sql = "insert into blobtest (myblob) values (?)"; //requires auto increment column based on triggers getSimpleJdbcTemplate().getJdbcOperations().update(new AbstractLobPreparedStatementCreator(lobHandler, sql, "ID") { @Override protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException { lobCreator.setBlobAsBytes(ps, 1, blob); } }, keyHolder); Long newId = keyHolder.getKey().longValue(); return newId; }
dataAccess.update(runtime.getSQL(), runtime.getArgs(), generatedKeyHolder); if (keys.size() > 0) { result = generatedKeyHolder.getKey(); } else { result = null;
KeyHolder newCode = injectedKeyFactory.getKeyHolder(); try { namedParameterJdbcTemplate.update(sql, paramMap, newCode); } catch (DuplicateKeyException e) { logger.error("Duplicate Key"); } data.setId(newCode.getKey().intValue());
public void createMaterial(MaterialBean material) { KeyHolder generatedKeyHolder = new GeneratedKeyHolder(); this.getJdbcTemplate().update(new MaterialPreparedStatementCreator(material), generatedKeyHolder); material(generatedKeyHolder.getKey().longValue()); }
BatchSqlUpdate batchSqlUpdate = new BatchSqlUpdate(dataSource, getSqlString(), getSqlTypes(), 1); KeyHolder keyHolder = new GeneratedKeyHolder(); long result; int row = batchSqlUpdate.update(getObjParameters(tmpObj), keyHolder); if (row > 0) result = keyHolder.getKey().longValue();
@Override public Number insertReturnKey(@Nonnull T message) { checkNotNull(message); KeyHolder keyHolder = new GeneratedKeyHolder(); int rows = doInsert(buildInsertSql(message), keyHolder); if (rows == 0) { throw new RuntimeException( "fail to insert into " + tableName + ": " + messageHelper.toString(message)); } return keyHolder.getKey(); }
public Integer createInfoServiceBySql(String sql, List placeList, IdHolder idHolder) throws Exception{ String tempKeyId=calcuIdKey(); KeyHolder keyHolder=new GeneratedKeyHolder(); Integer retStatus=getInnerDao().insertObj(sql,placeList.toArray(),keyHolder,tempKeyId); if(idHolder!=null){ idHolder.setIdVal(keyHolder.getKey()); } return retStatus; }
public int saveMessageContent(byte[] messageContent) throws DataAccessException { MapSqlParameterSource params = new MapSqlParameterSource(); params.addValue(CONTENT, messageContent, Types.LONGVARBINARY); params.addValue(SIZE, messageContent.length, Types.INTEGER); KeyHolder key = new GeneratedKeyHolder(); getNamedParameterJdbcTemplate().update(INSERT_CONTENT, params, key); return key.getKey().intValue(); }
MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("prenom", prenom); parameters.addValue("nom", nom); parameters.addValue("datenaissance", datenaissance); parameters.addValue("numtelephone", numtelephone); final String SQL = "INSERT INTO compte (idcompte, prenom, nom, datenaissance, numtelephone) " + " VALUES(compte_idcompte_seq.NEXTVAL, :prenom, :nom, :datenaissance, :numtelephone)"; KeyHolder keyHolder = new GeneratedKeyHolder(); NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(txManager.getDataSource()); int nb = namedJdbcTemplate.update(SQL, parameters, keyHolder, new String[]{"idcompte"}); Long generatedId = keyHolder.getKey().longValue();