在使用mybatis进行foreach 操作时报错,Available parameters are [collection, list],
我的mapper文件中的代码
() <select id="getAdminByConForeach" resultType="com.blackberry.day1.Admin" > SELECT * FROM Admin WHERE id IN <foreach item="admin_id" collection="aa" separator="," index="2" open="(" close=")"> #{admin_id} </foreach> </select> (
)
测试方法
(```)
@Test
public void test21() throws IOException {
String resource = "conf/mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream (resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder ().build (inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession ();
try{
AdminMapperDynamicSQL adminMapperDynamicSQL = sqlSession.getMapper (AdminMapperDynamicSQL.class);
List
for (Admin admin: list) {
System.out.println(admin);
}
}
finally {
}
}
(```)
查询资料后发现,当mybatis传入参数为list集合的时候;mybatis会自动把其封装为一个map;会以“list”作为key;
每个元素的值作为value;格式为Map<"list",value>
当mybatis传入参数为数组的时候mybatis会自动把其封装为一个map;会以“array”作为key;
每个元素的值作为value;格式为Map<"array",value>
解决法