You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot框架下使用MyBatis出现无法设置映射参数错误如何解决

问题原因
  • 核心错误为Mapper XML中#{user.email}被手动添加了单引号包裹。MyBatis的#{}语法本身属于预编译参数占位符,会自动根据参数类型完成引号适配、SQL转义等逻辑,无需手动添加单引号。
  • 手动加单引号后,MyBatis会将'#{user.email}'识别为固定字符串,不会解析为参数占位符,整条SQL最终仅识别到#{id}1个参数占位符。但框架仍会尝试为接口方法定义的2个参数(id、user.email)赋值,因此抛出「参数索引超出范围(2 > 参数总数1)」的异常。
解决方案

删除#{user.email}外层的单引号即可,修改后的Mapper XML配置如下:

<select id="selectAnswerByUser" parameterType="java.util.Map" resultType="Answer">
    select * from answer where exercise_id=#{id} and user_email=#{user.email}
</select>
补充说明

如果使用${}字符串拼接语法才需要手动添加单引号,但该语法存在SQL注入风险,非特殊场景优先使用#{}预编译传参即可。

内容的提问来源于stack exchange,提问作者Yuzhen Feng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:02