博客
关于我
mybatis中foreach的用法(转)
阅读量:799 次
发布时间: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/

你可能感兴趣的文章
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>