1、报错信息如下:
nested exception is org.apache.ibatis.binding.BindingException:Parameter 'XXX' not found. Available parameters are [page, hashMap, param1, param2]

2、原因:
对应的***Mapper.java文件,函数入参有多个引起。
有问题的代码:
1)***Controller.java关键代码:
Map<String,Object> hashMap = new HashMap<>();
hashMap.put("states",states);
hashMap.put("userId",userId);
return service.queryList(hashMap, page);
2)***Mapper.java关键代码:
List<ListDto> queryList(Map<String,Object> hashMap, Page page);
3)***Mapper.xml关键代码(有问题处):
<select id="queryList" resultType="com.test.bi.bo.ListDto" parameterType="java.util.Map">
...
WHERE ob.state = 1 AND ob.states = #{states} AND ob.user_id = #{userId}
...
</select>
3、解决方法:
对应的***Mapper.xml文件sql应该写成:
#{hashMap.states}
原因就是:
List<ListDto> queryList(Map<String,Object> hashMap, Page page);
有多个参数,所以报了参数错:
parameters are [page, hashMap, param1, param2]
如果***Mapper.java文件函数的入参只有一个的时候,比如:
List<ListDto> queryList(Map<String,Object> hashMap);
***Mapper.xml文件sql就可以直接使用:
#{states}
这篇博客讲述了在使用MyBatis时遇到的参数未找到异常,详细分析了问题出现的原因:Controller、Mapper接口和Mapper XML文件中的参数不匹配。解决方案是修正Mapper XML文件中的SQL,将#{states}
5653

被折叠的 条评论
为什么被折叠?



