当前使用版本(必填,否则不予处理)
mybatis-plus-boot-starter v3.5.2
dynamic-datasource-spring-boot-starter 3.5.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
使用多数据源进行数据库查询,使用lambQuery查询,只查询主库,从库不查询
重现步骤(如果有就写完整)
1、首先是配置了一主四从五个数据库,在五个数据库中都添加了同一张表,生成表的entity类、mapper类以及五个service及impl类,在impl类上用@DS来标注使用对应的数据源
2、通过service.save(entity)保存五个库的五条数据,为了标注不同,五条数据分别是主库、从库1、从库2、从库3、从库4
3、现在通过service.list(new QueryWrapper())查询所有数据,发现对应的数据库查询对应的数据,即主库查询得到的是主库结果
4、又通过service.lambdaQuery().list()查询所有数据,发现所有都是从主库查询
5、又通过lambdaQuery()i添加条件查询,仍然是从主库查询,而不是对应的数据库查询对应的数据
` List list = userService.list(new QueryWrapper().eq("age",20));
List slave1 = user1Service.list(new QueryWrapper().eq("age",20));
List slave2 = user2Service.list(new QueryWrapper().eq("age",20));
List slave3 = user3Service.list(new QueryWrapper().eq("age",20));
List slave = user4Service.list(new QueryWrapper().eq("age",20));
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【master】= [{"name":"主库添加","id":1588439309895610369,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【slave1】= [{"name":"从库添加1","id":1588439310126297089,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【slave2】= [{"name":"从库添加2","id":1588439310524755970,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【slave3】= [{"name":"从库添加3","id":1588439310919020545,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【slave】= [{"name":"从库添加","id":1588439311380393986,"age":20}]
List lambdaMaster = userService.lambdaQuery().eq(User::getAge,20).list();
List lambdaSlave1 = user1Service.lambdaQuery().eq(User::getAge,20).list();
List lambdaSlave2 = user2Service.lambdaQuery().eq(User::getAge,20).list();
List lambdaSlave3 = user3Service.lambdaQuery().eq(User::getAge,20).list();
List lambdaSlave = user4Service.lambdaQuery().eq(User::getAge,20).list();
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【lambda-master】= [{"name":"主库添加","id":1588439309895610369,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【lambda-slave1】= [{"name":"主库添加","id":1588439309895610369,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【lambda-slave2】= [{"name":"主库添加","id":1588439309895610369,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【lambda-slave3】= [{"name":"主库添加","id":1588439309895610369,"age":20}]
==> Preparing: SELECT id,name,age FROM multi_user WHERE (age = ?)
==> Parameters: 20(Integer)
<== Total: 1
【lambda-slave】= [{"name":"主库添加","id":1588439309895610369,"age":20}]`
报错信息
无报错信息,在类里面被try住了没有抛出
Comment From: miemieYaho
应该是 default 方法没走spring的aop自然就无法切库