spring boot整合Mybatis和mongodb后,报Invalid bound statement (not found)异常

mac2024-07-20  57

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"/>

这样就可以解决上述问题。

最新回复(0)