mybatis 批量插入



一個list集合,添加到數據庫中,在mybatis中就是mapper.xml中的配置:

<insert id="insertByList" parameterType="java.util.List">
insert into action_table_former_relation (id, action_id, target_table,former_table, former_tables_actions_id, task_owner,
create_time, update_time)
values
<foreach collection="list" item="record" index= "index" separator =",">
(
#{record.id,jdbcType=BIGINT},
#{record.actionId,jdbcType=INTEGER},
#{record.targetTable,jdbcType=VARCHAR},
#{record.formerTable,jdbcType=VARCHAR},
#{record.formerTablesActionsId,jdbcType=VARCHAR},
#{record.taskOwner,jdbcType=VARCHAR},
#{record.createTime,jdbcType=TIMESTAMP},
#{record.updateTime,jdbcType=TIMESTAMP}
)
</foreach>
</insert>


對應的Mapper.java
int insertByList(List<ActionTableFormerRelation> records);


說明Mapper.java中只有一個參數,所以XML文件中可以用collection可以使用list標識。

foreach的主要用在構建in條件中,它可以在SQL語句中進行迭代一個集合。
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item表示集合中每一個元素進行迭代時的別名,
index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,
open表示該語句以什麼開始,separator表示在每次進行迭代之間以什麼符號作爲分隔 符,
close表示以什麼結束,
在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,
但是在不同情況 下,該屬性的值是不一樣的,主要有一下3種情況:

1.如果傳入的是單參數且參數類型是一個List的時候,collection屬性值爲list 
2.如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值爲array 
3.如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map 







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章