実際には、@Options
を使用してそれを行うことができます アノテーション(データベースでauto_incrementなどを使用している場合):
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
keyProperty="idName"
に注意してください SomeBeanのキープロパティの名前が「id」の場合、一部は必要ありません。 keyColumn
もあります MyBatisが自分で主キー列を見つけることができないまれなケースのために利用可能な属性。 @Options
を使用することにも注意してください 、メソッドをいくつかのデフォルトパラメータに送信しています;ドキュメントを参照することが重要です(以下にリンクされています-現在のバージョンでは60ページ)!
(古い答え) (ごく最近の)@SelectKey
アノテーションは、より複雑なキー検索(シーケンス、identity()関数...)に使用できます。 は、次のとおりです。 MyBatis3ユーザーガイド
(pdf)例として提供:
@Insert("insert into table3 (id, name) values(#{nameId}, #{name})")
@SelectKey(statement="call next value for TestSequence", keyProperty="nameId", before=true, resultType=int.class)
int insertTable3(Name name);
@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);