Как вернуть сгенерированный первичный ключ UUID - PullRequest
1 голос
/ 25 июня 2019

Я работаю с базой данных mySQL, и таблица имеет первичный ключ в формате UUID, сгенерированный механизмом базы данных. Я использую Spring Framework JdbcTemplate (https://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/jdbc/core/JdbcTemplate.html) для выполнения всех операций. Но на вставках мне нужно вернуть первичный ключ вызывающей стороне. JdbcTemplate имеет метод публичное обновление int (PreparedStatementCreator psc, KeyHolder генерируется KeyHolder) но он возвращает только целочисленные ключи. KeyHolder Интерфейс также позволяет использовать только цифровые клавиши. Кто-нибудь знает, как преодолеть этот недостаток? Должен ли я использовать что-то другое, чем JdbcTemplate? Это не желательно, но возможно. Дайте мне подсказку, пожалуйста.

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете использовать его для получения нецифрового ключа

GeneratedKeyHolder gendKey = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
    @Override
    public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
        PreparedStatement stmt = con.prepareStatement("INSERT INTO MY_TABLE(col1, col2) VALUES (?, ?) ", Statement.RETURN_GENERATED_KEYS);
        stmt.setString(1, "val1");
        stmt.setString(2, "val2");
        return stmt;
    }
}, gendKey);

// If multiple rows updated, use getKeys()
String uuid = (String) gendKey.getKey().get("UUID-COL-NAME");
...