mybatis批量插入(insert)和批量更新(update)
文章目錄
- 一、Mybatis批量插入
- 二、批量更新
前言:這兩天在做mybatis批量插入和更新的時候,對這塊不是很清楚,所以今天寫篇文章,鞏固加深印象。
一、Mybatis批量插入
批量插入的sql 語句是:
insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo,oo,oo)
mybatis中mapper.xml的代碼如下:
<!-- 批量插入數據 --><insert id="insertBatch" parameterType="java.util.List"useGeneratedKeys="true">insert into t_user(name,age,address)values<foreach collection="list" item="user" index="index"separator=",">(#{user.name},#{user.age},#{user.address})</foreach></insert>二、批量更新
批量更新數據使用的sql語句是:
UPDATE tableSET aa = CASE idWHEN 1 THEN 'oo'WHEN 2 THEN 'pp'WHEN 3 THEN 'qq'END,SET bb = CASE idWHEN 1 THEN 'xx'WHEN 2 THEN 'yy'WHEN 3 THEN 'zz'END WHERE id IN (1,2,3)上面這一條mysql語句可以更新多條記錄,mybatis中mapper.xml的代碼如下:
<update id="updateBatch" parameterType="java.util.List">update t_user<trim prefix="set" suffixOverrides=","><trim prefix="name=case" suffix="end,"><foreach collection="list" item="i" index="index"><if test="i.name!=null">when USER_ID=#{i.userId} then #{i.name}</if></foreach></trim><trim prefix=" aget =case" suffix="end,"><foreach collection="list" item="i" index="index"><if test="i.aget!=null">when USER_ID=#{i.userId} then #{i.aget}</if></foreach></trim><trim prefix="address=case" suffix="end," ><foreach collection="list" item="i" index="index"><if test="i.address!=null">when USER_ID=#{i.userId} then #{i.address}</if></foreach></trim></trim>where<foreach collection="list" separator="or" item="i" index="index" >USER_ID=#{i.userId}</foreach> </update>名詞解釋:
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
使用批量插入執行的SQL語句應該等價于:
總結
以上是生活随笔為你收集整理的mybatis批量插入(insert)和批量更新(update)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringSecruity整合Oaut
- 下一篇: SpringBatch顺序读取多文件(M