Mybatis批量插入更新xml方式和注解方式的方法實(shí)例
前言
最近工作上遇到很多批量插入的場(chǎng)景,但是百度很難得到我想要的結(jié)果,而且查出來(lái)的效果不是很好~
所以就自己來(lái)寫(xiě)一份給大家參考,希望對(duì)大家有用
Mybatis 批量插入注解形式
@Insert("<script> INSERT INTO t_device_policy " + "(id,device_id,type,policy,create_time,update_time) " + "VALUES " + "<foreach collection = 'list' item='list' separator=',' > " + " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy},#{list.createTime},#{list.updateTime}) " + "</foreach>" + "</script>") int insert(@Param(value = "list")List<DevicePolicy> list);
Mybatis 批量插入主鍵存在更新注解形式
@Insert("<script> INSERT INTO t_device_policy " + "(id,device_id,type,policy " + "VALUES " + "<foreach collection = 'list' item='list' separator=',' > " + " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy}) " + "</foreach>" + "ON DUPLICATE KEY " + "UPDATE policy = VALUES(policy)" + "</script>") int insert(@Param(value = "list")List<DevicePolicy> list);
ON DUPLICATE KEY的使用場(chǎng)景大家知道嗎?
當(dāng)你設(shè)計(jì)的數(shù)據(jù)庫(kù)表中的主鍵存在時(shí)更新對(duì)應(yīng)的字段,不存在則插入。
還有一種情況就是你設(shè)計(jì)的唯一主鍵存在時(shí)更新對(duì)應(yīng)的字段,不存在則插入。
大家可以根據(jù)自己的場(chǎng)景看是否需要該字段~
Mybatis 批量更新注解形式
@Insert("<script> INSERT INTO t_device_policy " + "(id,device_id,type,policy " + "VALUES " + "<foreach collection = 'list' item='list' separator=',' > " + " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy}) " + "</foreach>" + "ON DUPLICATE KEY " + "UPDATE policy = VALUES(policy)" + "</script>") int insert(@Param(value = "list")List<DevicePolicy> list);
Mybatis 批量插入xml形式
<insert id="batchAdd" parameterType="java.util.List"> INSERT INTO t_student(uid,student_id,study_days) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.uid},#{item.studentId},#{item.studyDays}) </foreach> </insert>
Mapper中的方法為
void batch(List<StudentPo> po)
Mybatis 批量插入主鍵更新xml形式
<insert id="batchAdd" parameterType="java.util.List"> INSERT INTO t_student(uid,student_id,study_days) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.uid},#{item.studentId},#{item.studyDays}) </foreach> ON DUPLICATE KEY UPDATE update_time = now() </insert>
Mapper中的方法為
void batch(List<StudentPo> po)
總結(jié)
以上為Mybatis批量操作經(jīng)常使用的部分,大家可以根據(jù)需要自行提取,如果有什么問(wèn)題可以留言哈~希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
java?stream實(shí)現(xiàn)分組BigDecimal求和以及自定義分組求和
這篇文章主要給大家介紹了關(guān)于java?stream實(shí)現(xiàn)分組BigDecimal求和以及自定義分組求和的相關(guān)資料,Stream是Java8的一大亮點(diǎn),是對(duì)容器對(duì)象功能的增強(qiáng),它專注于對(duì)容器對(duì)象進(jìn)行各種非常便利、高效的聚合操作或者大批量數(shù)據(jù)操作,需要的朋友可以參考下2023-12-12SpringBoot中@ControllerAdvice注解的使用方法
這篇文章主要介紹了SpringBoot中@ControllerAdvice注解的使用方法,這是一個(gè)增強(qiáng)的?Controller,對(duì)controller層做異常處理、數(shù)據(jù)預(yù)處理、全局?jǐn)?shù)據(jù)綁定,?springboot?會(huì)自動(dòng)掃描到,不需要調(diào)用,這個(gè)注解是spring?MVC提供的,在springboot中也可以使用,需要的朋友可以參考下2024-01-01注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)
這篇文章主要為大家介紹了注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Java實(shí)現(xiàn)反轉(zhuǎn)一個(gè)鏈表的示例代碼
本文主要介紹了Java實(shí)現(xiàn)反轉(zhuǎn)一個(gè)鏈表的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07推薦一款I(lǐng)ntelliJ IDEA提示快捷鍵的Key Promoter X插件
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA提示快捷鍵的Key Promoter X插件,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10Java批量向PDF文件中添加圖像水印實(shí)現(xiàn)細(xì)節(jié)
這篇文章主要為大家介紹了Java批量向PDF文件中添加圖像水印實(shí)現(xiàn)細(xì)節(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05