MyBatis foreach 标签

您所在的位置:网站首页 东胜东站到长途汽车站多远 MyBatis foreach 标签

MyBatis foreach 标签

2024-07-08 21:38:10| 来源: 网络整理| 查看: 265

备注:本文修改于2022年6月28日。

1、MyBatis foreach 标签介绍

foreach 标签主要用在构建 in 条件中,它可以在 SQL 语句中遍历一个集合。

2、MyBatis foreach 标签属性

foreach 标签的属性主要有 collection,item,index,open,separator,close。其含义如下所示:

collection:遍历的对象。当遍历对象是List、Array对象时,collection属性值分别默认用"list"、"array"代替,而Map对象没有默认的属性值。

注意:可以使用 @Param(“keyName”) 注解来自定义collection属性值,设置keyName后,list、array会失效。

item:集合元素遍历时的别名称。该参数为必选项。index:在list、array中,index为元素的序号索引,但是在Map中,index为遍历元素的key值。该参数为可选项。open:遍历集合时的开始符号,通常与 close=")" 搭配使用。使用场景为 IN()、values()时。该参数为可选项。separator:元素之间的分隔符,类比在 IN() 的时候,separator=",",最终所有遍历的元素将会以设定的逗号符号隔开。该参数为可选项。close:遍历集合时的结束符号,通常与 open="(" 搭配使用。该参数为可选项。3、collection 属性值的三种情况

如果参数类型为List时,collection的默认属性值为list,同样可以使用@Param注解自定义;

如果参数类型为Array时,collection的默认属性值为array,同样可以使用@Param注解自定义;

如果传入的参数类型为Map时,collection的属性值可为下面三种情况:

遍历 map.keys遍历 map.values遍历 map.entrySet()3.1 参数类型为 List,collection 属性值为 list

Mapper文件:

public List selectByIds(List userIds);

SQL片段:

select * from t_users where id in #{item} 3.2 参数类型为 List,使用 @Param 注解自定义 collection 属性值

Mapper文件:

List getUserInfo(@Param("userName") List userName);

SQL片段:

SELECT * FROM t_users where USERNAME IN #{value} 3.3 参数类型为 Array,collection 属性值为 array

Mapper文件:

public List selectByIds(int[] userIds);

SQL片段:

select * from t_user where id in #{item} 3.3 参数类型为 Array,使用 @Param 注解自定义 collection 属性值

Mapper文件:

List getUserInfo(@Param("userName") String[] userName);

SQL片段:

SELECT * FROM t_users where USERNAME IN #{value} 3.3 参数类型为 Map,collection 属性值分为三种情况

Mapper文件:

List getUserInfo(@Param("user") Map user);第一种情况:获取Map的键值对

多字段组合条件情况下,一定要注意书写格式:括号()

SELECT * FROM t_users where (USERNAME,AGE) IN (#{key},#{value}) 第二种:参数Map类型,只需要获取key值或者value值 SELECT * FROM t_users where (USERNAME) IN #{key} 第三种:参数Map类型,只需要获取value值 SELECT * FROM t_users where (USERNAME) IN #{key} 4、补充介绍

关于动态SQL另外一个常用的操作就是需要对一个集合进行遍历,通常发生在构建IN条件语句时。

SELECT * FROM tb_employee WHERE ID in #{item}

foreach元素的功能非常强大,它允许指定一个集合,声明可以用在元素体内的集合项和索引变量。它也允许指定开闭匹配的字符串以及在迭代中间放置分隔符。这个元素是很智能的,因此它不会随机地附加多余的分隔符。

// 根据传入的id集合查询员工 List selectEmployeeIn(List ids);

selectEmployeeIn方法传入的参数是一个List集合,该集合中的每一个Integer元素表示需要查询的员工的id。

public void testSelectEmployeeIn(SqlSession session) { EmployeeMapper em = session.getMapper(EmployeeMapper.class); // 创建List集合 List ids = new Arraylist(); // 往List集合中添加两个测试数据 ids.add(1); ids.add(2); List list = em.selectEmployeeIn(ids); list.forEach(employee -> System.out.println(employee)); }

测试selectEmployeeln方法,控制台显示如下:

DEBUG [main]==> Preparing: SELECT * FROM tb employee WHERE ID in( ? , ? ) DEBUG [main]==> Parameters: 1(Integer) , 2 (Integer) DEBUG [main]


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭