好久没写mybatis了,最近踩了个坑记录下,mapper.xml中某个sql报错,该sql带in所以用了foreach动态标签,原sql如下:
<![CDATA[ <delete id="deleteBatch" parameterType="java.util.List" > DELETE FROM api_attribute_merge_index_target WHERE api_attribute_id IN <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </delete> ]]>
mapper接口定义如下:
Long deleteBatch(List<Long> list);
然后junit测试时报错
Parameter 'items' not found. Available parameters are [collection, list]
然后网上搜了下foreach的具体用法,仔细对比检查了没问题啊,看了网上各种网友的,也没问题啊,折腾了好一会儿,发现多了个<![CDATA[ ]]>标签,foreach等动态标签是不能嵌套在<![CDATA[ ]]>标签的!!去掉就好了。习惯性的复制,复制的锅啊。