今天遇到了一个@DS 动态切换数据库无效的BUG
我用sqlserver数据库的数据源调用Mysql的数据时有个FROM_UNIXTIME不是可用的错误,同过百度找到了原因,原来是因为spring事务导致Mybatis plus的多数据源@DS不起作用
然后我在被调用的service上加了@Transactional(propagation = Propagation.REQUIRES_NEW)
@DS("ms")
@Service
@Transactional(propagation = Propagation.REQUIRES_NEW)
public class ProServiceImpl implements ProService {
@Autowired
private ProMapper proMapper;
@Override
public List<ss> getSsList() throws Exception {
List<ss> list=proMapper.getSsList();
return list;
}
}
我这里是查询语句可用不需要事物这种处理就行了,假如这里有增删改的话这样就会出现问题,因为这里是新建一个事物,当ProServiceImpl 这里先执行完成后,后面调用它的service回滚,这里就无法回滚