在使用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>
解決法