调用存储过程报这个错,网上找了很多解决方案
有的说是多空格,有的说是字段不对应,有的说是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类型就行了。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐