在同service下,可以写两个不同的DS(“db”)注解,但是不能本类调用(会读不到DS注解,我猜测)
看官方文档说是在方法上和类上都可以用
解决方案一(贴近原来的写法)
例如,想连两个数据库的内容。
业务逻辑的service下,
@Autowired
private ICaseinfoService db3Service;//这个接口的实现类里写方法,带上注解指定数据库db3
@Autowired
private ICaseInfoService db1Service;//这个接口的实现类里写方法,带上注解指定数据库db1
private void sqlToMysql() {
List<Caseinfo> caseInfos = db3Service.getCaseInfo();//从数据库3查
Integer count = db1Service.insertCaseInfo(caseInfos);//插入到数据库1
log.info("本次插入数据{}条", count);
}
读数据源的service下
@Service
public class CaseInfoServiceImpl extends ServiceImpl<CaseInfoMapper, CaseInfo> implements ICaseInfoService {
@Autowired
private CaseInfoMapper db1CaseInfoMapper;
@DS("db1")
@Override
public Integer insertCaseInfo(List<Caseinfo> caseInfos) {
//略
return 1;
}
@Service
public class CaseinfoServiceImpl extends ServiceImpl<CaseinfoMapper, Caseinfo> implements ICaseinfoService {
@Autowired
private CaseinfoMapper db3CaseInfoMapper;
@DS("db3")
@Override
public List<Caseinfo> getCaseInfo() {
return db3CaseInfoMapper.selectList(null);
}
}
解决方案二(在mapper接口层上加注解)
@DS("db3")
public interface CaseinfoMapper extends BaseMapper<Caseinfo> {
}