mybatis多個(gè)區(qū)間處理方式(雙foreach循環(huán))
mybatis多個(gè)區(qū)間處理
如圖:要實(shí)現(xiàn)車輛數(shù)不同區(qū)間查詢條件
思路
a.前端傳數(shù)組,數(shù)組里面放"1-5"String類型值
b.后端mybatis用雙foreach循環(huán)解析
后端代碼如下:
<!--圖例車輛數(shù)區(qū)間-->
<if test="countCargoList != null and countCargoList.size>0" > and ( <foreach item="item" index="index" collection="countCargoList"> ( <foreach item="item2" index="index2" collection="item.split('-')"> <if test="index2%2==0"> sfi.count_cargo >= #{item2} </if> <if test="index2%2==1"> and sfi.count_cargo <= #{item2} </if> </foreach> ) <!--最后一次不用加or--> <if test="index != countCargoList.size-1" > or </if> </foreach> ) </if>
多個(gè)foreach同時(shí)使用問題
應(yīng)用場景
1、多個(gè)表的數(shù)據(jù)一起刪除的時(shí)候,有的時(shí)候不會建立外鍵,但主表的關(guān)聯(lián) 表很多的時(shí)候,可以直接利用mybatis 進(jìn)行多表刪除。
注意事項(xiàng)
mybatis 中多個(gè)foreach 循環(huán),第一次循環(huán)的collection 看到的值是一個(gè)(數(shù)組、list、map、對象,由collection的配置主導(dǎo))。
第二次foreach 是直接copy第一個(gè)foreach的對象值,這個(gè)時(shí)候會一直累加對象。
解決方案
數(shù)組為例
dao層去掉@Param注解
void batchDeleteSysTransferRegist(String rowData[]);
mybatis
<delete id="batchDeleteSysTransferRegist" parameterType="string"> ? ? ? ? delete from sys_transfer_regist_item ?where transfer_regist_id in ? ? ? ? <foreach item="rowData" collection="array" open="(" separator="," close=")"> ? ? ? ? ? ? #{rowData} ? ? ? ? </foreach> ? ? ? ? ;delete from sys_transfer_regist_piece ?where transfer_regist_id in ? ? ? ? <foreach item="rowData1" collection="array" open="(" separator="," close=")"> ? ? ? ? ? ? #{rowData1} ? ? ? ? </foreach> ...... ? ? </delete>
切記;隔開。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MyBatis中的循環(huán)插入insert foreach問題
- mybatis foreach 循環(huán) list(map)實(shí)例
- MyBatis如何進(jìn)行雙重foreach循環(huán)
- MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)
- mybatis錯(cuò)誤之in查詢?<foreach>循環(huán)問題
- MyBatis中使用foreach循環(huán)的坑及解決
- mybatis insert foreach循環(huán)插入方式
- MyBatis之foreach標(biāo)簽的用法及多種循環(huán)問題
相關(guān)文章
ActiveMQ基于zookeeper的主從(levelDB Master/Slave)搭建
這篇文章主要介紹了ActiveMQ基于zookeeper的主從levelDB Master/Slave搭建,以及Spring-boot下的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)
這篇文章主要介紹了Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Jmeter對接口測試入?yún)?shí)現(xiàn)MD5加密
這篇文章主要介紹了Jmeter對接口測試入?yún)?shí)現(xiàn)MD5加密,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下
這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Java關(guān)鍵字instanceof的兩種用法實(shí)例
這篇文章主要介紹了Java關(guān)鍵字instanceof的兩種用法實(shí)例,本文給出了instanceof關(guān)鍵字用于判斷一個(gè)引用類型變量所指向的對象是否是一個(gè)類(或接口、抽象類、父類)及用于數(shù)組比較,需要的朋友可以參考下2015-03-03MyBatisCodeHelperPro最新激活方法(有效方法)
這篇文章主要介紹了MyBatisCodeHelperPro最新激活方法親測有效,非常好用,小編今天以idea2021.2.1為例給大家詳細(xì)講解,需要的朋友可以參考下2022-08-08springboot項(xiàng)目訪問靜態(tài)資源的配置代碼實(shí)例
這篇文章主要介紹了springboot項(xiàng)目訪問靜態(tài)資源的配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11