mybatisは自己増加プライマリ・キーを返します

3869 ワード

前言
本論文では,返すプライマリキーの結論のみを記録し,ソースコード解析を行わない.
結論
以下のinsertOrUpdateは、insert on duplicate key update+に@Paramを使用してインパラメータを注入する場合、任意の場合にkeyPropertyが使用する必要がある"@Paramのインパラメータ名である.プライマリ・キー・プロパティ名(entity.id)の形式で、パラメータ・オブジェクトに正しく解析してプライマリ・キー+バッチinsertを設定する場合、@Paramの注釈ではプライマリ・キーを返すことができないため、paramenterTypeは@Paramよりもリターン・プライマリ・キーに汎用性があります.+InsertOrUpdateの場合、selectKeyは挿入時のプライマリ・キーのみを正しく返すことができ、更新時のプライマリ・キーを正しく返すことができず、useGenerateKeysは挿入または更新時にプライマリ・キーを正しく返すことができます.したがって、insertOrUpdateではuseGeneratedKeyを使用します.+バッチinsertOrUpdateでは、いずれの場合もプライマリ・キーを正しく返すことができないため、プログラム・ロジックは返されるプライマリ・キーに依存することはできません.
じっこう
  • 挿入
    int insert(BoyEntity entity);
    
    "insert" useGeneratedKeys="true" keyProperty="id" parameterType="BoyEntity">
            insert into boy (`name`, created_time, modified_time)
            values (#{name}, now(), now())
    </insert>
  • 一括挿入
    int insertBatch(List entityList);
    
    "insertBatch" useGeneratedKeys="true" keyProperty="id">
            insert into boy (`name`, created_time, modified_time)
            values 
            <foreach collection="list" item="entity" index= "index" separator =",">
                (#{entity.name}, now(), now())
            </foreach>
    >
  • int insertOrUpdate(BoyEntity entity);
    
    id="insertOrUpdateUseGeneratedKeys" useGeneratedKeys="true" keyProperty="id" parameterType="BoyEntity">
            insert into boy (`name`, created_time, modified_time)
            values (#{name}, now(), now())
            on duplicate key update modified_time = now()
    
  • を挿入または更新する.
  • 一括挿入または更新
    int insertOrUpdateBatch(List entityList);
    
    id="insertOrUpdateBatch">
            insert into boy (`name`, created_time, modified_time)
            values 
            "list" item="entity" index= "index" separator =",">
                (#{entity.name}, now(), now())
            
            on duplicate key update modified_time = now()
        
    
  • リファレンス
  • ピット回避必見:詳細なMyBatisは、SQL文insert on duplicate key updateの自己増加プライマリ・キーの挿入または更新を含む自己増加プライマリ・キー実験を返す