这次项目中,在配置多个jdbc的数据源时,当用通配符表示dao的路径时,如果第一个数据源的dao路径包含第二个或第三个数据源的dao路径,控制器在寻在对应的dao时,会报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ppp.user.dao.IUserDao.selectByPrimaryKey
明明这个dao是存在的,但是为什么找不到呢?
经过测试,发现控制器在寻找dao时,默认从第一个数据源开始,如果第一个数据源的dao路径包含了IUserDao(第二个数据源的dao)的路径,但是对应的mapper.xml文件却不在这个路径下时(理论上也不应该在),myBatis就会以为这个dao是第一个数据源的dao,但是没有对应的mapper.xml文件,故就会报这个错了。
解决办法:
1、可以将扫描范围小的数据源放在前面
2、可以将公共的数据源放在项目的外层包下面,其他的放在内层包下面
3、(猜想)配置文件的扫描路径写多个,这个没尝试过,待实现了再来编辑