MyBatis 批量插入資料

衣舞晨風發表於2016-07-29

Map型別引數批量插入

xml檔案中sql定義如下:

  <!--入參map結構-->
    <!--key:valueList,value:欄位值集合 -->
    <!--key:languageKey,value:語言key-->
    <insert id="addTrainRecordBatch" parameterType="java.util.Map">
        insert into test_${languageKey}(code,name)
        values
        <foreach collection="valueList" item="item" index="index" separator=",">
            (#{item.codeValue},#{item.nameValue})
        </foreach>
    </insert>

具體引數結構如下:
這裡寫圖片描述

其實,這裡的引數map可以更復雜一些,但一定要包含上面圖中的languagKey、valueList這兩個鍵值。

對應的mapper介面中呼叫函式:

 /**
     * 批量插入
     *
     * @param map
     * @return
     */
    public int addTrainRecordBatch(Map map);

實體類型別引數批量插入

xml檔案中sql定義如下:

 <insert id="addTrainRecordBatch" parameterType="parameterEntity">
        INSERT INTO test(code,name)
        values
    <foreach collection="list" item="item" index="index" separator=",">
            (#{item.code},#{item.name})
    </foreach>
</insert>

parameterEntity是資料庫表對應的實體類:


@Table(name = "test")
public class Test {
    private String code;

    private String name;

    /**
     * @return code
     */
    public String getCode() {
        return code;
    }

    /**
     * @param code
     */
    public void setCode(String code) {
        this.code = code == null ? null : code.trim();
    }

    /**
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name
     */
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
}

對應的mapper介面中呼叫函式:

 /**
     * 批量插入
     *
     * @param trainRecordList
     * @return
     */
    public int addTrainRecordBatch(List<parameterEntity> trainRecordList);

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章