记录一次多数据源配置失效的情况
  ehrZuhofWJiC 11天前 14 0

说明:在一些复杂的业务情景,比如我们需要在一个订单审核通过后,在将数据库状态修改的同时,将订单与订单详细这两条数据写入到另一个数据库中。我们就可以通过在配置文件中,配置多数据源,然后通过在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),事务在跨数据源的情况下是不会生效的,去掉之后就能正常切换数据源了。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 11天前 0

暂无评论

推荐阅读
ehrZuhofWJiC