今天在工作修改代码遇到mybatis的xml中注释的坑:
在使用mybatis进行查询的时候报错:Parameter index out of range (2 > number of parameters, which is 1),
意思是:两个参数无法放在一个位置
一开始看xml中语句和参数是没问题的,但是还是依旧报这个错误,最后发现原来是用的注释是 - -
并且注释中有#{paramer},这样mybatis在解析xml时会默认为有一个参数,所以会报错。
当时注释的代码片段如下:
虽然分页的sql语句被我注释了,但是我在前面处理分页时已经给了次参数值,而该注释方式不正确,所以导致报错。
<select id="pageQueryList" resultType="com.ruiqing.common.content.entity.vo.ArctypeDetailsVO" parameterType="com.ruiqing.common.content.entity.dto.PageQueryArctypeFilter">
SELECT
*
FROM c_arctype as ca
<where>
arctype_parent_id = #{arctypeParentId}
</where>
ORDER BY ca.sort
-- limit ${(pageNum - 1)* pageSize} , ${pageSize}
</select>
此外如果使用/* */ 来注释也会报错。
总结:在mapper.xml中尽量使用 这样的注释形式,如果使用了-- 或者/* */那么注释中一定不能有#{}或者${}。