質問

可能で、@@本人からのSQLを挿入し、春jdbcテンプレート電話のかけ方は?どうすれば良いですか。

役に立ちましたか?

解決

JDBCTemplate.update方法は、あなたが自動生成キーを取得するために使用することができますGeneratedKeyHolderと呼ばれるオブジェクトを取るようにオーバーロードされます。例えば、(コードでは、ここでから撮影しますの):

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

他のヒント

かつ SimpleJdbcInsert.executeAndReturnKey?この形態によっては入力:

(1)入力は、 Map

public java.lang.Number executeAndReturnKey(java.util.Map<java.lang.String,?> args)

Descriptionインタフェースからコピーされた: SimpleJdbcInsertOperations

実行を挿入した値を用され、生成されます。この名前のカラムの自動生成キーをして指定します。このメソッドは常に戻る KeyHolder その呼び出し側になることを確認で実際に発生する鍵となります。

指定した:

executeAndReturnKey インターフェイス SimpleJdbcInsertOperations

パラメータ:

args - Map containing column names and corresponding value

戻り値:

the generated key value

(2)入力は、 SqlParameterSource

public java.lang.Number executeAndReturnKey(SqlParameterSourceparameterSource)

Descriptionインタフェースからコピーされた: SimpleJdbcInsertOperations

実行を挿入した値を用され、生成されます。この名前のカラムの自動生成キーをして指定します。このメソッドは常に戻る KeyHolder その呼び出し側になることを確認で実際に発生する鍵となります。

指定した:

executeAndReturnKey インターフェイス SimpleJdbcInsertOperations

パラメータ:

parameterSource - SqlParameterSource containing values to use for insert

戻り値:

生成されたキーの値です。

todd.pierzina答えに詳細なメモ/サンプルコードを追加する

jdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
        jdbcInsert.withTableName("TABLE_NAME").usingGeneratedKeyColumns(
                "Primary_key");
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("Column_NAME1", bean.getval1());
        parameters.put("Column_NAME2", bean.getval2());
        // execute insert
        Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(
                parameters));
           // convert Number to Int using ((Number) key).intValue()
            return ((Number) key).intValue();

「ワンライナー」がある場合、私は知らないが、これは(MSSQLのために少なくとも)トリックを行うようだ。

// -- call this after the insert query...
this._jdbcTemplate.queryForInt( "select @@identity" );

まともな記事ここを。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top