调用存储过程报这个错,网上找了很多解决方案
有的说是多空格,有的说是字段不对应,有的说是mybatis参数写多了,或者少写了,如果你有实体类,可能是实体类没有set方法。
通过仔细的查看,发现上面的解决方案,在我这都没有对应上,我没有实体类,返回的是map,所以不用考虑setget方法。
最终的解决方案是我的dao 接口写错了
错误写法:
Map<String,Object> getxxxx(@param(value = “id”) String id);
正确写法: void getxxxx(Map<String,Object> map);
通过分析我的写法是入参是一个字符串,返回值是一个map,正常开发是没有问题的,
当调用存储过程,这种接口函数,就不行了,存储过程会把返回结果,返回到你入参的map里,我们只需要关注入参的map里有没有返回值就行了。通过上面的解释,可想而知,mybatis存储过程给我返回值的时候,并没有往我方法的返回值map上注入,而是往我的方法参数上注入了,一个map注入到字符串类型上肯定会出错的,把方法的参数类型改成map类型就行了。