1.问题描述:当spring boot项目整合Mybatis和mongodb后,调用dao层方法,报Invalid bound statement (not found)异常。
2.问题跟踪:实际原因为,mybatis的mapper扫描配置中,base package的包路径下既有mybatis的MysqlBizDao,也有mongo的mongoBizDao文件,导致程序运行时,mybatis找不到mongoBizDao对mongoBizMapper中的方法。
(1)applicationContext-mysql.xml配置文件中mybatis的mapper扫描配置如下,mybatis会扫描所有在"com.keep.prime.dao"包下的文件。
<mybatis:scan base-package="com.keep.prime.dao"/>
3.解决思路:
将mongodb的Dao和Mybatis的Dao,放在不同的包下。避免mybatis的误扫描即可。
4.解决方案:
(1)将mongodb的Dao和Mybatis的Dao,放在不同的包下。比如分别放在"com.keep.prime.dao.mongo"和"com.keep.prime.dao.mysql"下。
(2)将mybatis和mongodb的配置文件分成两份配置文件书写。
a.修改applicationContext-mysql.xml中mybatis的扫描配置为:
<mybatis:scan base-package="com.keep.prime.dao.mysql"/>
b.设置applicationContext-mongo.xml中的扫描配置为:
<context:annotation-config/>
<context:component-scan base-package="com.keep.prime.dao.mongo"/>
这样就可以解决上述问题。