当前位置: 首页 > news >正文

陵水网站建设装修设计公司什么叫口碑营销

陵水网站建设装修设计公司,什么叫口碑营销,网站流量少怎么办,wordpress修改文章时间为什么存在数据源切换和食物时效问题? 由于业务数据来源不同 需要配置多个数据源来进行数据的查询 编辑等操作 这一切换业务对数据的一致性要求很高那就要保证ACID啦 也就是数据的有效性 要么是成功的 要么是失败的。 数据源切换采用mybatisplus支持 多数据源配置&a…

为什么存在数据源切换和食物时效问题?
由于业务数据来源不同 需要配置多个数据源来进行数据的查询 编辑等操作 这一切换业务对数据的一致性要求很高那就要保证ACID啦 也就是数据的有效性 要么是成功的 要么是失败的。
数据源切换采用mybatisplus支持
多数据源配置:oracle和mysql的数据类型

 spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterdatasource:master:username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://10.20.204.130:3306/user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaicoloan:username: rootpassword: rootdriver-class-name: oracle.jdbc.driver.OracleDriverurl: jdbc:oracle:thin:@10.20.201.173:1521:rthhhhhdb

由于是公司业务 故大致做一些特殊类名称的改改写
1:方法的入口

@RestController
public class testContorller {@AutowiredtestService testService;@PostMapping("/queryBankInfoList")public String queryBankInfoList(){List<CoTodoTask> coTodoTasks = testService.queryBankInfoList();return JSON.toJSONString(JSON.toJSONString(coTodoTasks));}
}

service接口定义

public interface testService extends IService<CoTodoTask> {List<Task> queryBankInfoList();}

实现service的核心类

Service
@DS("coloan")
public class testServiceImpl extends ServiceImpl<TaskMapper, Task> implements testService {@AutowiredUserService userService;@AutowiredTaskMapper TaskMapper;@Transactional(rollbackFor = Exception.class)@Overridepublic List<Task> queryBankInfoList() {//  用户表在MySQLResult result = userService.userInfo(117);QueryWrapper<Task> wrapper = new QueryWrapper<>();wrapper.isNotNull("id");//  任务表在Oracle中List<Task> Tasks = TaskMapper.selectList(wrapper);return Tasks;}
}

默认主数据原 这里可以不用注解指定 因为配置文件默认的主数据原就是master 这里我加上了

@Service
@DS("master")
public class UserServiceImpl implements UserService {@Overridepublic Result userInfo(Integer userId) {User user = userMapper.selectUser(userId, null);return new Result().setData(userVO);}
}

运行调试 发现一下问题
Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在
注意观察信息
userService的数据库应该是master,但是却是coloan的,导致代码报500,也就是说@DS切换数据源没有起作用
初步结论
多数据源失效,然后去掉事务发现切换正常 在于这样的切换失去了事务控制的行为。
通过下面的方式解决

@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)@Overridepublic List<CoTodoTask> queryBankInfoList() {...}

通过上述的修改 数据源能正常的切换 并且可控事务
2:什么是事务的传播特性
当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。
事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。
在这里插入图片描述
演示事务的传播特性
ps:这里借用一下我之前看到的一篇关于事务传播特性特别棒的几张图片。
1:大小事务传播特性都是REQUIRED

@Transactional(propagation = Propagation.REQUIRED)public void multiTransaction() {}@Transactional(propagation = Propagation.REQUIRED)public void updateBook() {}@Transactional(propagation=Propagation.REQUIRED)public void updateUser() {}

传播流程:
在这里插入图片描述
大小事务传播特性都是REQUIRES_NEW
在这里插入图片描述
传播流程:在这里插入图片描述
3:大事务是REQUIRED,小1REQUIRED,小2REQUIRES_NEW
在这里插入图片描述
传播流程:
在这里插入图片描述
总结:
事务会导致多数据源失效,这个大家一定要记清
一定要明白事务的传播特性,开发中其实常用的就只有REQUIRED和REQUIRES_NEW,大家只要把这两个搞明白,就能应对绝大数的问题。
以上是mybatis-plus之数据源切换事务失效问题 关注老哥带你上高速 。。。。。。。。。
在这里插入图片描述

http://www.hkea.cn/news/413806/

相关文章:

  • wordpress 清空回收站合肥网站优化软件
  • 电站建设招聘网站智推教育seo课程
  • 做静态网站选用什么服务器站长素材网站
  • 网站建设先做前台还是后台百度认证是什么
  • 广州专业做crm系统的供应商seo网站培训班
  • 景安建网站企业网站seo方案案例
  • 山东滕州疫情最新消息今天i长沙官网seo
  • 公司做网站买域名之后做什么百度一下你就知道手机版
  • 北京婚恋网站哪家最好企业推广宣传方式
  • 国发网站建设西安做网站公司
  • 网站推广服务合同简述网络营销的主要方法
  • 信息门户网站是什么成人计算机培训机构哪个最好
  • 网站建设公司 中企动力公司东莞商城网站建设
  • b2c的电子商务网站自己想做个网站怎么做
  • 京东pc网站用什么做的如何注册网站怎么注册
  • 长沙商城网站制作seo线下培训课程
  • web网站开发公司网站制作优化排名
  • 这么做3d网站企业邮箱网页版
  • 瑞安网站建设公司关键词排名网络推广
  • 南京学做网站友情链接检查工具
  • 参考文献网站开发百度重庆营销中心
  • 如何做微信ppt模板下载网站企业网页设计公司
  • 做b2b网站百度点击快速排名
  • 网站怎么做移动图片不显示不出来吗芭嘞seo
  • 旅游网站建设服务器ip域名解析
  • 企业网站建设三个原则百度指数资讯指数是指什么
  • 房地产集团网站建设方案软文文案案例
  • 阜蒙县建设学校网站是什么北京seo编辑
  • 珠海建设局网站十大经典事件营销案例分析
  • 创建网站开发公司互联网推广引流是做什么的