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}