mybatis批量操作-xml方式


在實際項目中,我們一般都會用到批量insert、delete、update等操作,由於使用頻率還是蠻高的,這里就做個簡單的記錄,供以后學習和參考.

批量insert

在數據庫中,批量插入可以是多條insert into tableName values(?,?,?...);
或者一條insert into tableName values (?,?,?...),(?,?,?...),(?,?,?...)....
那么我們在使用mybatis時,xml就可以如下寫批量操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
<insert id ="INSERT-CODE-BATCH" parameterType="java.util.List" >
insert into redeem_code
(bach_id, code, type, facevalue,create_user,create_time)
values
<foreach collection ="list" item="reddemCode" index= "index" separator =",">
(
#{reddemCode.batchId}, #{reddemCode.code},
#{reddemCode.type},
#{reddemCode.facevalue},
#{reddemCode.createUser}, #{reddemCode.createTime}
)
</foreach >
</insert >

 

標簽說明:

  1. foreach元素的屬性主要有 item,index,collection,open,separator,close。
  2. item表示集合中每一個元素進行迭代時的別名
  3. index指定一個名字,用於表示在迭代過程中,每次迭代到的位置
  4. open表示該語句以什么開始
  5. separator表示在每次進行迭代之間以什么符號作為分隔符
  6. close表示以什么結束
  7. collection屬性為必填屬性! 可以是List,Array,Map.

注意
這里的foreach標簽沒有包含insert into tableName,所以最后實際執行的是一條SQL語句:
insert into redeem_code (batch_id, code, type, facevalue,create_user,create_time)
values
(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? )

推薦mybatis博客專欄

批量update

mybatis的批量重點就是怎么去將sql拼接成可以直接在數據庫執行的sql,這里再記錄下以ibatis的批量操作,只要會了一個,其他也都不是問題了.

1
2
3
4
5
6
7
8
9
10
<update id="WHOLESALE-UPDATE-REBATE-CONFIG-BY-PRODUCTCODE" >
UPDATE
rebate_config
SET
rebate_type = 'BY_RATE',rebate_config_value = #rebateConfigValue#
WHERE
<iterate property="list" conjunction="or" open="(" close=")">
product_code =#list[]#
</iterate>
</update>

標簽說明:

  1. prepend 可被覆蓋的 SQL 語句組成部分,添加在語句的前面(可選)
  2. property 類型為 java.util.List 的用於遍歷的元素(必選)
  3. open 整個遍歷內容體開始的字符串,用於定義括號(可選)
  4. close 整個遍歷內容體結束的字符串,用於定義括號(可選)
  5. conjunction 每次遍歷內容之間的字符串,用於定義 AND 或 OR(可選)

注意

  1. 我這里傳遞過來的參數是一個Map<string,object>

    1
    2
    3
    Map<String, Object> conditions = new HashMap<String, Object>();
    conditions.put("rebateConfigValue", rebateValue); //rebateValue是一個固定的值
    conditions.put("list", productCodeList);
  2. 使用時,在List元素名后面包括方括號[]非常重要,方括號[]將對象標記為List,以防解析器簡單地將List輸出成String

ibatis官方文檔說明
ibatis學習網站


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM