15
private void insertIntoMyTable (Myclass m) {
    String query = "INSERT INTO MYTABLE (NAME) VALUES (?)";
    jdbcTemplate.update(query, m.getName());
}

上記のクエリがレコードを挿入するIDと、テーブルの列が自動インクリメントされます。

挿入時にこの自動インクリメントされたIDを元に戻す方法はありますか?したがって、この例では、私のメソッドの戻り値は次のようになります。int

4

4 に答える 4

21

このリファレンスを確認してください。jdbcTemplate.updateは次のように使用できます。

編集 求められたとおりにインポートを追加

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;

コードの使用法は次のとおりです。

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
于 2012-10-14T14:01:40.210 に答える