Parameter 'uidList' not found. Available parameters are [list]

本文详细解析了MyBatis在处理list集合和数组作为参数时的自动封装机制,包括如何将list转化为map并以list作为key,以及数组转化为map并以array作为key的过程。同时,文章指出在遇到参数未找到的异常时,可能的原因是collection名称存在问题,并提供了解决方案。

当mybatis传入参数为list集合的时候;mybatis会自动把其封装为一个map;会以“list”作为key;每个元素的值作为value;格式为

Map<"list",value>


其中collectoin的值就为key;如果抛出 Parameter 'uidList' not found. Available parameters are [list]异常;就说明collection的值有问题

如果传入的是list;就把其值改为list就可以了


当mybatis传入参数为数组的时候mybatis会自动把其封装为一个map;会以“array”作为key;每个元素的值作为value;格式为

Map<"array",value>

在使用 MyBatis 进行批量操作时,出现 `Parameter 'id' not found. Available parameters are [collection, list]` 的错误,通常是因为在映射文件中引用了不存在的参数名。 当在 DAO 接口中使用 `@Param("entities")` 注解来指定参数名称时,如果在 XML 映射文件中没有正确引用这个名称,或者 MyBatis 无法正确解析这个名称,就会导致此类错误。具体来说,当传递给 MyBatis 的参数是一个 `List` 类型时,MyBatis 默认会将这个列表视为名为 `list` 的参数,而不是接口中指定的名字 [^2]。 例如,在 DAO 接口中定义如下方法: ```java void batchInsert(@Param("entities") List<Entity> entities); ``` 而在 XML 映射文件中,如果尝试访问 `entities` 参数中的属性,如 `#{entities.id}`,而没有正确配置 `foreach` 标签中的 `collection` 属性为 `"entities"` 或者 `"list"`(取决于实际传入的参数名),则会导致错误 [^2]。 正确的 XML 配置应该如下所示: ```xml <insert id="batchInsert"> <if test="entities != null and !entities.isEmpty()"> INSERT INTO some_table (id, name) VALUES <foreach collection="entities" item="entity" separator=","> (#{entity.id}, #{entity.name}) </foreach> </if> </insert> ``` 或者,如果在 DAO 接口中没有使用 `@Param` 注解,那么默认情况下,MyBatis 会将 `List` 类型的参数视为名为 `list` 的参数,此时 XML 文件应如下配置: ```xml <insert id="batchInsert"> <if test="list != null and !list.isEmpty()"> INSERT INTO some_table (id, name) VALUES <foreach collection="list" item="item" separator=","> (#{item.id}, #{item.name}) </foreach> </if> </insert> ``` 通过这种方式,可以确保 MyBatis 正确地识别并处理传入的参数列表。当更改参数名称为 `list` 后问题得以解决,这表明问题出在参数名称的映射上,而非数据类型本身 。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值