MyBatis支援批量插入獲得自增id
阿新 • • 發佈:2019-02-20
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中有討論,不知後面是否有修復,可以使用自定義的名字,沒有試過。