【问题描述】:
今天在写mybatis的动态判断语句时,出现报错信息:(报错信息从下往上看)
Parameter index out of range (3 > number of parameters, which is 2).
我们在mapper.xml文件中写动态SQL,如果在条件中使用了错误的注释,那么它会把注释的内容当成参数,意思是要3个参数,3个占位符,但是就传了2个参数值过来,只要把那个注释去掉就可以。
【解决办法】:去掉注释。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.EmpMapper">
<!-- resultType : 单条记录所封装的类型 -->
<select id="list" resultType="com.itheima.pojo.Emp">
select * from emp
where
<if test="name != null">
name like concat('%', #{name}, '%')
</if>
<if test="gender != null">
and gender = #{gender}
</if>
<if test="begin != null and end != null">
and entrydate between #{begin} and #{end}
</if>
order by update_time desc;
</select>
</mapper>