博客
关于我
mybatis中foreach的用法(转)
阅读量:820 次
发布时间:2023-04-17

本文共 4076 字,大约阅读时间需要 13 分钟。

MyBatis foreach语法详解

MyBatis 的 foreach 语法 提供了灵活的方式来处理多个元素的循环,支持 ListArrayMap 三种类型。以下是 foreach 的各个属性及其详细说明。


foreach 的属性

属性 描述
item 循环体中的具体对象,支持属性点路径访问。
例如:item.ageitem.info.details
ListArray 中是元素,在 Map 中是 value。该参数为必选。
collection 要循环的对象,作为入参时,默认使用 ListArrayMap 的类型名称作为键。
可以通过 @Param("keyName") 自定义键名。该参数为必选。
separator 元素之间的分隔符,常用于 in() 方法时,避免手动输入逗号。该参数可选。
open 循环代码的开始符号,常用于 in()values() 方法。该参数可选。
close 循环代码的结束符号,常用于 in()values() 方法。该参数可选。
index ListArray 中表示元素的序号,在 Map 中表示键的值。该参数可选。

示例一:List 的使用

:实际 SQL 会生成 WHERE id IN (?, ?),参数会替换为具体的 ID 值。


示例二:Map 的使用

#{operationTypeId}#{storageId} 会被替换为具体的值,生成动态的 WHERE 条件。


示例三:Array 的使用

public void testQuery() {
ColInfoDao dao = (ColInfoDao) ctx.getBean("colInfoDao");
Map map = new HashMap();
map.put("userId", "tom");
map.put("password", "123");
String[] a = { "20000001", "20000002" };
map.put("classIds", Arrays.asList(a));
Object password = dao.query(map);
System.out.println("password:" + password);
Assert.assertEquals("123", password);
}

示例四:Map 的使用

#userId##password# 会被替换为具体的值,#classIds[]# 会生成动态的 IN 条件。


MapListArray 的区别

  • Map:存储键值对,循环时使用键的值。在 Map 中,index 属性表示键的值。
  • ListArray:存储多个元素,循环时使用元素的值。index 属性表示元素的序号。

foreach 的灵活性

  • Map 中,可以使用动态的键名,例如 collection="map.key"
  • ListArray 中,可以使用 index 属性获取元素的序号。

注意事项

  • in() 方法中,separator 属性可以设置分隔符,避免手动输入逗号。
  • openclose 属性用于生成循环语句的括号,常用于 in()values() 方法。

通过以上示例,可以看到 foreachListArrayMap 中的灵活应用,适用于不同场景的动态查询需求。

转载地址:http://fmgfk.baihongyu.com/

你可能感兴趣的文章
oracle快速创建可用用户
查看>>
oracle技能综述,ORACLE要点综述(之一:基本SELECT语句)-数据库专栏,ORACLE
查看>>
Oracle收购DataScience.com扩展云平台分析能力
查看>>
Oracle教程之管理索引(七)--Oracle显示索引信息
查看>>
oracle数据库 添加定时器
查看>>
Oracle数据库DBA日常Sql列表
查看>>
Oracle数据库ORA-01555解决含clob和blob字段表报错快照过旧问题
查看>>
ubuntu24 finalshell 无法连接ubuntu服务器, 客户端无法连接ubuntu, 无法远程连接ubuntu。
查看>>
Oracle数据库入门——初级系列教程
查看>>
oracle数据库包package小例子
查看>>
UBUNTU 添加删除用户
查看>>
Oracle数据库备份与还原
查看>>
Ubuntu Seata开机自启动服务
查看>>
uart 驱动架构
查看>>
Oracle数据库学习(三)
查看>>
Oracle数据库安装成功后,忘记解锁账户和设置密码
查看>>
TypeError: create_purple() 接受 0 个位置参数,但给出了 2 个
查看>>
Oracle数据库异常--- oracle_10g_登录em后,提示java.lang.Exception_Exception_in_sending_Request__null或Connection
查看>>
Oracle数据库异常---OracleDBConsoleorcl无法启动
查看>>
oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
查看>>