Spring JdbcTemplate - вставка BLOB-объекта и возврат сгенерированного ключа - PullRequest
20 голосов
/ 05 мая 2010

Из документации Spring JDBC я знаю, как вставить BLOB-объект, используя JdbcTemplate

final File blobIn = new File("spring2004.jpg");
final InputStream blobIs = new FileInputStream(blobIn);
jdbcTemplate.execute(
  "INSERT INTO lob_table (id, a_blob) VALUES (?, ?)",
  new AbstractLobCreatingPreparedStatementCallback(lobhandler) {                         
      protected void setValues(PreparedStatement ps, LobCreator lobCreator) 
          throws SQLException {
        ps.setLong(1, 1L);
        lobCreator.setBlobAsBinaryStream(ps, 2, blobIs, (int)blobIn.length());           
      }
  }
);
blobIs.close();

А также, как получить сгенерированный ключ недавно вставленной строки :

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

Есть ли способ, которым я мог бы объединить два?

Ответы [ 11 ]

0 голосов
/ 05 мая 2010

Если ваша базовая база данных - mysql, вы можете автоматически сгенерировать ваш первичный ключ. Затем, чтобы вставить запись в вашу базу данных, вы можете использовать следующий синтаксис для вставки:

INSERT INTO lob_table (a_blob) VALUES (?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...