mybatis中<foreach>用法及相关问题(多参数情况)

mybatis中foreach使用 mybatis使用foreach标签 阅读详情
AI摘要

本文详细介绍了MyBatis中foreach标签的作用与用法,包括其主要属性如item、index、open、separator、close和collection的具体含义及应用场景,并通过具体实例展示了如何在mapper.xml文件中使用foreach标签动态生成SQL语句。

一、标签foreach作用

编写mybatis中的mapper.xml文件时,我们可使用<foreach>标签将数组或列表等数据类型动态生成适用于查找的sql语句。
例如将数据string[] ids= {'1','2','3'} 转换为 ('1','2','3')

二、标签foreach的主要属性

  1. item:集合中元素迭代时的别名,该参数为必选。

  2. index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选

  3. open:foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选

  4. separator:元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。

  5. close: foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。

  6. collection: 要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象有"array"代替作为键,Map对象没有默认的键。可以使用@Param(“keyName”)来设置键,设置keyName后,list,array将会失效。除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性List
    ids。入参是User对象,那么这个collection = “ids”.如果User有属性Ids
    ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = “ids.id”。

三、标签foreach的使用

1、mapper.xml 中的代码

		<if test="instruStatusArray != null and instruStatusArray!= ''">
            and instru_status in
            <foreach collection="instruStatusArray" item="item" index="index"
                     open="(" separator="," close=")" >
                #{item}
            </foreach>
        </if>
        <if test="pd.instruNo != null and pd.instruNo!= ''">
            and instru_no like concat('%', #{pd.instruNo}, '%')
        </if>

2、mapper中的代码

List<PageData> getInstrumentList(@Param("pd") PageData pd,@Param("instruStatusArray") String[] instruStatusArray);

3.serviceImpl中的代码

public List<PageData> getInstrumentList(PageData pd) {
        List<PageData> list = instrumentMapper.getInstrumentList(pd,pd.getString("instruStatus").split(","));
        return list;
    }

四、说明

  1. 由于mapper向xml中传递了两个参数,所以用@Param("")标记了两个键值分别为:
    @Param("pd") PageData pd,@Param("instruStatusArray") String[]
    
    instruStatusArray在之后的xml中使用<if>标签时采取这种方式pd.instruNo获取变量instruNo中的数据。
物联网组网技术优缺点对比:蓝牙、LoRa、wifi、NB-IoT、ZigBee等 1.前言 最近对物联网产品自组网技术选型,找到合适的组网技术,让产品自行组网并完成数据的传输。 2.参数对比 阅读详情

相关推荐

新手避坑指南:用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR,这些参数设置错了白忙活

本文详细介绍了使用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR时的关键参数设置技巧,帮助新手避免常见错误。重点解析了连接图生成、干涉工作流、DEM处理等环节的12个关键参数,包括Max Normal Baseline、Unwrapping Coherence Threshold等,提供实测安全值范围和优化建议,确保处理效率和结果准确性。

weixin_30694389的博客 557

Mybatis的多参数传递foreach标签

Mybatis的多参数传递foreach标签

qq120631157的博客 1757

保姆级教程:用STM32标准库搞定TIM1的PWM输出(附完整代码和避坑点)

本文提供STM32F103高级定时器TIM1的PWM输出保姆级教程,涵盖从工程搭建到完整代码实现的详细步骤。重点解析TIM1作为高级定时器的特殊配置要点,包括时钟初始化、PWM通道设置和GPIO复用功能,并附常见问题排查指南和动态调整占空比的实用技巧,帮助开发者高效实现精准PWM控制。

weixin_30673611的博客 433

mybatis foreach 循环,传入多个参数

mybatisforeach循环,传入多个参数 上代码: controller: @RequestMapping(value = "/findPage", method = RequestMethod.POST) @ResponseBody public Object findPage(@RequestParam(required=false) String jobCa...

f45056231p的博客 1万+

投第一篇SCIE英文期刊(详细步骤)

一个投稿SCIE英文期刊的过程

weixin_48849679的博客 1万+

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

Mybatis标签<foreach>详解

接到一个批量更新表数据的需求,深入学习了<foreach>标签,下面做一个总结。 一、<foreach>的六个属性 <foreach>属性介绍 属性 介绍 collection 有三种格式:list,array,map。按照传递参数的类型填写对应格式。 item 标签内对象集的参数名 separator 每个子循环结束后...

qq_36631553的博客 2万+

Viobot使用教程总贴

使用教程总贴

weixin_66666206的博客 1408

mybatis foreach 属性及其三种使用情况

foreach 属性介绍 单参数是 array 类型 单参数是 List 类型 单参数是 Map 类型 多参数foreach 属性介绍foreach 用于迭代传入过来的参数。 它的属性介绍分别是 collection:表示传入过来的参数的数据类型。该参数为必选。要做 foreach 的对象,作为入参时,List 对象默认用 list 代替作为键,数组对象有 array 代替作为键,Map 对象没有

七淅的博客 2万+

MOS五类漏电流与优化策略

分析了五种主要漏电流机制:1)反偏结泄漏,由PN结热激发和隧

硬核科技 442

YOLOv13改进策略【Neck篇】| GSConv 轻量卷积,Slim-Neck 减参数还不掉点

Neck 篇的第二篇继续"替换式"改进,这次的对象是 Neck 里的下采样卷积。GSConv 出自《Slim-neck by GSConv: a better design of lightweight detector》(2022),它的出发点:DWSConv(深度可分离)轻但"信息混不进通道",标准卷积重但表达好——GSConv 用GConv(分组卷积)混通道 + DWConv 补空间 + Channel Shuffle 打散,两全其美。

qq_53329130的博客 30

mybatis之foreach用法

在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了 foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名,该参数为必选。 index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open:foreach代码的开始符号,一般是(和close=")"合用。.

s_156的博客 3万+

python爬虫项目(一百九十八):电商平台用户行为数据分析与推荐系统、爬取电商平台用户行为数据

本文详细介绍了如何通过爬虫技术抓取电商平台的用户行为数据,并结合数据分析技术,构建一个简单的推荐系统。使用Selenium模拟用户操作抓取动态网页数据,并通过API接口直接获取用户行为数据,能够为后续的用户行为分析提供基础数据。我们结合了基于用户协同过滤、基于商品协同过滤和矩阵分解等方法,构建了不同的推荐系统。实际应用中,可以进一步优化推荐算法,利用更复杂的深度学习技术和更高效的数据处理方法,提升推荐的准确性和个性化程度。

斌擎科技 2361

mybatis多个foreach_mybatis之foreach用法

在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,该参数为必选。index:在list和数组中,index是元素的序号,在map中,index...

weixin_35012177的博客 884

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Mybatis中动态sql之foreach的用法

mybatis之foreach用法 在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了 foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名,该参数为必选。 index:在list和数组...

这里记录着我一点一滴的进步 4335

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MyBatis动态SQL之<foreach>用法

MyBatis动态SQL之用法

棒棒糖的糖不含糖的博客 4197

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Mybatis中的Foreach用法总结

Mybatis中的Foreach用法总结 例一: 接口: int insertBounsExchangePay(@Param("pay") HxBonusExchangReport pay); Mapper: ​ 参数类型需要是List 如果接口中使用了 @Param(“pay”) 来指定参数名称,则Mapper文件中使用时collection属性就不能使用 list,必须要使用指定的名称"pay" ; <foreach collection="pay" item="item" index="i

GG123_MM的博客 2575

mybatis ForEach 参数规范解析

转自:http://blog.youkuaiyun.com/wj3319/article/details/9025349 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了foreach功能,该功能比较强大,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余...

SmartTxp的博客 3740

MyBatis foreach 批量更新

在做配置选项(设备类型,所属楼层等)的时候,当删除某配置的时候,我需要检验该配置是否已被删除。@Override public BaseVO deleteOptionDetail(Integer id) { // 合法性验证 if (null == id) { return ParamErrorVO.getInstance(); ...

Monicase Blog 2万+

Mybatis 批量插入 insert foreach的相关问题

最近做一个批量导入的需求,将多条记录批量插入数据库中。解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入。期间遇到了“SQL 命令未正确结束 ”的错误,最终解决,记录下来供以...

choushengmu0664的博客 932

mybatis 中 foreach 及 collection 的用法

mybatis 中 foreach 及 collection 的用法

netuser1937的博客 6790

MyBatis中的循环插入insert foreach

MyBatis中的数据循环插入分析问题解决方法总结 分析问题 在后端数据需要的循环插入数据库中时,不要在实现类ServiceImpl中使用foreach语句 这样会导致每次插入一条数据就会查询一次数据库,导致性能极低 解决方法 在MyBatis中的Mapper.xml使用insert foreach实现数据的循环插入 这样就可以查询一次数据库,将所有数据循环插入 <insert i...

攻城狮Chova的博客 1万+
上一篇: Bootstrap-table使用,配置,及常见问题
下一篇: left join用法
马鱼羊
博客等级 码龄7年 426粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值