在springBoot框架中搭配使用mybatis-plus框架,项目中由于是两个数据库,就配置了多数据源,真正使用时,会发现各种各样的问题,其中遇到一个问题,就是调用mybaits-plus自带的IService时,不管在seriveImpl实现类中是否加上注解@DataSource,都不生效,只有重新写一个接口,比如叫MyService,重写IService,然后业务接口都extends MyService,特别注意,要在MyService上加上注解@DataSource,还有MyServiceImpl上也要加上注解@DataSource,这样就可以解决多数据源下无法切换数据源,无法操作数据库的问题。
另外一个问题是即使业务接口也继承了MyService,但是当切换数据源后,还是报表不存在,后来从一个道友那里学习到,是事务问题,链接来自https://blog.csdn.net/chengmeng_123/article/details/85048890,主要原因是事务是在connection层面管理的,启用事务后,一个事务内部的connection是复用的,所以就算AOP切了数据源字符串,但是数据源并不会被真正修改。@Transactional这个注解不能用,用了,就不能使用多数据源。
以此记录下,学习中......