mybatis多个区间处理方式(双foreach循环)
作者:ejQiu 发布时间:2023-11-26 09:01:42
标签:mybatis,区间,foreach,循环
mybatis多个区间处理
如图:要实现车辆数不同区间查询条件
思路
a.前端传数组,数组里面放"1-5"String类型值
b.后端mybatis用双foreach循环解析
后端代码如下:
<!--图例车辆数区间-->
<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>
多个foreach同时使用问题
应用场景
1、多个表的数据一起删除的时候,有的时候不会建立外键,但主表的关联 表很多的时候,可以直接利用mybatis 进行多表删除。
注意事项
mybatis 中多个foreach 循环,第一次循环的collection 看到的值是一个(数组、list、map、对象,由collection的配置主导)。
第二次foreach 是直接copy第一个foreach的对象值,这个时候会一直累加对象。
解决方案
数组为例
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>
切记;隔开。
来源:https://www.cnblogs.com/ejQiu-123/p/11448175.html


猜你喜欢
- 本文列举了我在周围同事的Java代码中看到的一些比较典型的错误。显然,静态代码分析(我们团队用的是qulice)不可能发现所有的问题,这也是
- android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 Translat
- 在谈 Volatile 之前,我们先回顾下 Java 内存模型 的三要素:原子性、可见性、有序性,也就是大家常提到的并发编程三要素。并发编程
- 1.基本介绍SpringBoot 支持的 webServer: Tomcat, Jetty, or UndertowSpringBoot 应
- 一. 概念简介在开始学习今天的知识之前,有必要先给大家讲解一下与今天内容相关的一些概念,否则可能会让一些小白产生迷惑。1. 日期和时间的区别
- 开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定。1. 简单的数据绑定例1using (SqlConne
- 引言内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑。不过世界上不存在
- 用Stream解决两层List属性求和假设一个人有很多个银行账户,每个银行账户中存有不同金额的存款,那么我们如何用Stream求一组人的所有
- 本文实例讲述了C#判断一天、一年已经过了百分之多少的方法。分享给大家供大家参考。具体如下:这里写了四个函数,分别是1.判断当前时间过了今天的
- 是否允许循环依赖和bean的命名重复取决于beanfactory的两大属性allowBeanDefinitionOverriding和all
- C# 泛型(Generic)定义:泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。也就是说,泛型是可
- springboot返回文件流@GetMapping(value = "/file/{fileName}")public
- SpringCloudStream配置以下配置摘自《SpringCloud微服务实战》,配置主要包括两大部分:Stream配置(基础配置、通
- 1.sonarQube的简介SonarQube是一款自动化代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与你现有的工作流集成,以
- fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而园进程称为父进程。使用fork()函数得到的子进程是父进程的一个复制
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:public ActionResult Upload() {
- Mybatis 有两种实现方式其一:通过xml配置文件实现其二:面向接口编程的实现  
- 本文实例讲述了winform实现创建最前端窗体的方法。分享给大家供大家参考。具体实现方法如下:一、需求:1).需要这个窗体始终处于前端而且可
- 一篇小白也能看懂的查找游戏物体的方式解析 – Unity 之 查找物体的几种方式。本文通过实际测试得出使用结论,大家进行简单记录,在使用时想
- 一、JPA介绍JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系