sql >> データベース >  >> RDS >> Mysql

アノテーション付きのmysqlでmybatisを使用してインサートのIDを返す方法

    実際には、@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);
    


    1. SQLiteでデータを暗号化する

    2. postgresでの動的SQLクエリ

    3. MySQLINSERTSELECT-重複する行

    4. Android-SQLite-Date1とDate2の間で選択