mybatis-plus切换数据源失败
mybatis-plus切换数据源失败
现象
多层数据源嵌套切换失败,本意是想查询H2数据源数据,但根据查询结果看,查询的是MySQL数据源
问题代码
H2数据源操作
//由于配置文件已经指定默认数据源是h2,所以这里没有加@DS
@Service
public class H2UserService extends ServiceImpl<UserMapper, User> {
}
MySQL数据源操作
@DS("mysql")
@Service
public class MysqlUserService extends ServiceImpl<UserMapper, User> {
	@Autowired
	private H2UserService h2UserService;
	public void testNestDs() {
        //调用h2数据库操作
		List<User> h2List = h2UserService.list();
		System.out.println("查询H2:");
		h2List.forEach(System.out::println);
		System.out.println("查询MySQL:");
		List<User> mysqlList = super.list();
		mysqlList.forEach(System.out::println);
	}
}
测试
@SpringBootTest
class MultiDatasourceApplicationTests {
	@Autowired
	private MysqlUserService mysqlUserService;
	@Test
	void testNestDs() {
		mysqlUserService.testNestDs();
	}
}
查询的数据结果一样,都是MySQL中的数据
查询H2:
User(id=1, username=admin, password=xxx)  #H2库里的数据实际不是这个,这是MySQL库里面的数据
User(id=2, username=test, password=xxx)
查询MySQL:
User(id=1, username=admin, password=xxx)
User(id=2, username=test, password=xxx)
解决
多层数据源嵌套调用时,即使是默认数据源,也要用@DS指定
在H2数据源操作类上加上 @DS("h2")
@DS("h2")
@Service
public class H2UserService extends ServiceImpl<UserMapper, User> {
}
测试结果
查询H2:
User(id=1, username=adminH2, password=xxx)
User(id=2, username=testH2, password=xxx)
查询MySQL:
User(id=1, username=admin, password=xxx)
User(id=2, username=test, password=xxx)
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号