先看代码
<!-- 查询每天新增总数 -->
<select id="selectUserCountDaily" parameterType="CustomerUser" resultType="map">
SELECT DATE(create_time) AS date, COUNT(*) AS sum
FROM tb_customer_user
WHERE 1 = 1
<if test="shopId != null and shopId != ''">
AND shop_id = #{shopId}
</if>
<if test="params.day != null and params.day != ''"><!-- 查询天数 -->
AND create_time >= CURDATE() - INTERVAL #{params.day} DAY
</if>
-- and create_time >= CURDATE() - INTERVAL #{params.day} DAY
GROUP BY DATE(create_time)
ORDER BY date ASC;
</select>
原因:
-- and create_time >= CURDATE() - INTERVAL #{params.day} DAY
这行代码,我是ctrl + / 快捷注释的,代码编译器是灰色显示,我以为已经是注释掉了,然而
我们在mapper.xml文件中写动态sql,如果在条件中使用了错误的注释,他也会把注释的内容当成参数,意思是要3个参数,3个占位符,但是就传了2个参数值过来,只要把那个注释去掉就可以。