莆田网站建站,做旅游网站的要求,WordPress添加前台漂亮注册,网站建站平台源码代码地址
码云地址springboot根据租户id动态指定数据源: springboot根据租户id指定动态数据源,结合mybatismysql多数源下的事务管理
创建3个数据库和对应的表 sql脚本在下图位置 代码的执行顺序
先设置主数据库的数据源配置目标数据源和默认数据源有了主库的数据源#xff…代码地址
码云地址springboot根据租户id动态指定数据源: springboot根据租户id指定动态数据源,结合mybatismysql多数源下的事务管理
创建3个数据库和对应的表 sql脚本在下图位置 代码的执行顺序
先设置主数据库的数据源配置目标数据源和默认数据源有了主库的数据源才能读取主数据库配置的所有数据源重新初始化数据源并放入ioc容器中在访问service方法之前先拦截到aop中把请求头中的租户id放入本地线程上下文中在调用mapper接口的时候跳转到自定义的数据源对应的determineCurrentLookupKey() 方法中,动态切换租户id下的数据源拿到结果打印
aa方法在header头中输入对应的租户id 可以看到对应的租户01对应的数据库下的表的数据 打印出来了 输入租户02,可以看到租户02对应数据库下的表的数据打印出来了 执行addBiao方法输入对应的租户id 可以看到租户2的数据库中王五并没有被插入说明多数据源下的事务生效了已经回滚数据了 注意
aop的执行顺序一定要比事务管理器的顺序要优先否则事务不会生效 如果不设置Order注解那么事务就不会拿到,DataSourceContextHolder设置的上下文中的租户id
到了动态数据源的方法中就会获取数据源为null也就是lookupKey为null