背景:
在应用A中引入组内另一个应用B的SDK时,出现该报错,而且有一个比较奇怪的现象:使用mybatis内置的方法(比如selectByPrimaryKey,selectByExample之类)时,功能正常,不报错,但是如果调用的dao方法是自己在mapper.xml中写的sql,就会出现标题中的错误。
解决方案:
网上的各种方法并不适用于该情况,经过检查,application.properties和mybatis-config.xml之类的配置文件中配置都正常;并且该问题是在引入新的sdk时才出现的,未引入该sdk时,并不会出现该错误。所以推断是引入的sdk中的mybatis配置覆盖了项目中原本的配置,导致项目找不到自己的mapper。
最终经过检查,引入的sdk的pom中有引入另外一个带有mapper配置的jar(该jar包是sdk所属应用B中的一个模块),该模块中配置了应用B的mybatis的mapper配置;实际上该sdk并不需要依赖应用B中的这个模块,所以去掉了sdk中该模块的pom依赖,重新发布sdk后,解决该问题。