mybatis 批量插入 Parameter 'floorId' not found. Available parameters are [arg0, collection, list]
时间: 2023-09-28 20:05:59 浏览: 216
这个错误通常是因为在执行批量插入时,MyBatis 找不到参数名称 `floorId`。这可能是因为你的 SQL 语句中没有指定这个参数,或者是因为你的参数名称与 SQL 语句中的参数名称不匹配。
解决这个问题的方法有两种:
1. 确认 SQL 语句中是否正确指定了参数名称,并且与 Java 代码中的参数名称一致。例如:
```xml
<insert id="batchInsert">
INSERT INTO my_table (floor_id, name) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.floorId}, #{item.name})
</foreach>
</insert>
```
在这个例子中,SQL 语句中正确指定了参数名称 `floor_id`,并且与 Java 代码中的参数名称 `floorId` 一致。
2. 如果 SQL 语句中没有指定参数名称,可以使用索引位置来引用参数。例如:
```java
List<MyObject> list = ...
sqlSession.insert("batchInsert", list);
```
```xml
<insert id="batchInsert">
INSERT INTO my_table (floor_id, name) VALUES
<foreach collection="list" item="item" separator=",">
(?, #{item.name})
</foreach>
</insert>
```
在这个例子中,SQL 语句中没有指定参数名称,而是使用了 `?` 占位符来引用参数。在 Java 代码中,参数的顺序与 SQL 语句中的占位符顺序一致。注意,在这个例子中,我们只指定了 `name` 参数,因为 `floor_id` 参数是通过 `?` 占位符来引用的。
阅读全文