情况"/>
记录一次多数据源配置失效的情况
说明:在一些复杂的业务情景,比如我们需要在一个订单审核通过后,在将数据库状态修改的同时,将订单与订单详细这两条数据写入到另一个数据库中。我们就可以通过在配置文件中,配置多数据源,然后通过在Mapper的方法上加@DS注解,来实现这样的业务。
spring:datasource:......dynamic:datasource:# 主要的数据库master:url: ......username: ......password: ......driver-class-name: ......# 2号数据库extends:url: ......username: ......password: ......driver-class-name: ......
使用@DS注解切换数据源;
@Mapper
public interface OrderMapper extends BaseMapper<Order> {@DS("extends")void saveOrder(Order order);
}
问题:使用了注解,配置中也配置了对应的数据源,但是实际操作并没有生效,报数据库表不存在的错误;
@Override@Transactional(rollbackFor = Exception.class)public Result<?> orderApprove(Integer id, Integer approveStatus) {......}
解决:因为在Service实现类对应的方法上面加了事务注解(@Transactional),事务在跨数据源的情况下是不会生效的,去掉之后就能正常切换数据源了。
更多推荐
记录一次多数据源配置失效的情况
发布评论