博客
关于我
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 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>