1. 程式人生 > >MyBatis支援批量插入獲得自增id

MyBatis支援批量插入獲得自增id

MyBatis以前不支援批量插入獲取自增id,於是有些需求就難以實現,插入一批資料但是都需要知道id的場景(比如需要將id記錄到日誌表)就只能換成一個個插入,一定程度上降低了效率。

之前有大神分析過MyBatis原始碼,並且給出了一種解決方案(稍微有點麻煩),詳見:

MyBatis在3.3.x修復了這個問題,詳見:

使用方式如下:

<insert id="batchInsert" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List">
    insert into xxxx values
    <foreach collection="list" item="item" index="index" separator=",">
        xxx
    </foreach>
</inser>

這裡有幾個注意點:

1. parameterType是List,當然也可以省略;

2. foreach中的collection需要寫成list(預設就是這個),當有多個引數需要加@Param的時候,裡面的名字也要寫成list。

其中第2點在一個issue中有討論,不知後面是否有修復,可以使用自定義的名字,沒有試過。