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

淄博网站设计制作汉中市建设工程信息申报系统

淄博网站设计制作,汉中市建设工程信息申报系统,dede网站重新安装,工地模板图片文章目录 一、多数据源的典型使用场景1 业务复杂#xff08;数据量大#xff09;2 读写分离 二、如何实现多数据源通过AbstractRoutingDataSource动态指定数据源多数据源切换方式AOPMyBatis插件 三、spring集成多个Mybatis框架 实现多数据源控制四、dynamic-datasource 多数据… 文章目录 一、多数据源的典型使用场景1 业务复杂数据量大2 读写分离 二、如何实现多数据源通过AbstractRoutingDataSource动态指定数据源多数据源切换方式AOPMyBatis插件 三、spring集成多个Mybatis框架 实现多数据源控制四、dynamic-datasource 多数据源组件 一、多数据源的典型使用场景 实际开发中进场可能遇到在一个引用中可能需要访问多个数据库的情况以下是两种典型场景 1 业务复杂数据量大 数据分布在不同的数据库汇总数据库拆了应用没拆。一个公司多个子项目各用各的数据库涉及数据共享。。。。 2 读写分离 为了解决数据库的读性能瓶颈读比写性能更高写锁会影响读阻塞从而影响读的性能。 很多数据拥主从架构。也就是一台主数据库服务器对外提供增删改查的生产服务器另一台从数据库服务器主要进行读的操作。 可以通过中间件ShardingSphere、mycat、mysql-proxy 、TDDL 。。。。 但是有一些规模较小的公司没有专门的中间件团队搭建读写分离基础设施因此需要业务开发人员自行实现读写分离。 这里的框架与上图类似。 不同的是在读写分离中主库和从库的数据库是一致的不考虑主从延迟。数据更新操作insert 、update、delete都是在主库上进行的主库将数据更新信息同步给 从库。在查询时可以在从库上进行。从而分担主库的压力。 二、如何实现多数据源 对于大多数的java应用都是用了spring框架spring-jdbc模块提供AbstractRoutingDataSource,其内部可以包含了多个DataSource 然后在 运行时来动态的访问哪个数据库。这种方式访问数据的框架图如下所示 应用直接操作的 AbstractRoutingDataSource的实现类告诉AbstractRoutingDataSource访问哪个数据库然后由AbstractRoutingDataSource从事先配置好的数据源db1db2 选择一个来访问对应的数据库。 通过AbstractRoutingDataSource动态指定数据源 多数据源切换方式 应用直接操作的是abstractRoutingDataSource的实现类告诉AbstractRoutingDataSource访问哪个数据库然后由AbstractRoutingDataSource从事先配置好的数据源 ds1ds2选择哪一个 来访问对应的数据库。 AOP Component Aspect public class DynamicDataSourceAspect {//前置Before(value within(com.example.dynamic.datasource.service.impl.*) annotation(wr))public void before( WR wr){String value wr.value();RoutingDataSourceContext order new RoutingDataSourceContext(value);System.out.println(数据源value);} }Target({ElementType.METHOD,ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) public interface WR {String value() default query; } RestController RequestMapping(frend) Slf4jpublic class FrendController {WRGetMapping(query)public Listmenu query(){Listmenu list menuService.list();return list;}}MyBatis插件 读写分离的数据源如果是Mybaits 可以结合插件实现读写分离动态切换数据源 package com.example.dynamic.datasource.plugin;import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; import com.example.dynamic.datasource.config.DynamicDataSource; import com.example.dynamic.datasource.config.RoutingDataSourceContext; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.SqlCommandType; import org.apache.ibatis.plugin.*; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds;import java.util.Properties;/*** ClassNameDynamicDataSourcePlugin* Description* Author* Date8/20/23 10:21 下午* Versiion1.0*/ //1.如下配置 //2. 将文件加入到mybatis中去 //Intercepts 声明mybatis 固定的写法 //Signature 代表为mybatis 底层的哪个对象去进行插件代理 Intercepts({Signature(type Executor.class,method update,args {MappedStatement.class,Object.class}), Signature(type Executor.class,method query,args {MappedStatement.class,Object.class, RowBounds.class,ResultHandler.class})}) public class DynamicDataSourcePlugin implements Interceptor {Overridepublic Object intercept(Invocation invocation) throws Throwable {//拿到当前方法【update、query】的所有参数Object[] objects invocation.getArgs();//MappedStatement 封装sqlMappedStatement ms (MappedStatement) objects[0];//if(ms.getSqlCommandType().equals(SqlCommandType.SELECT)){//读方法RoutingDataSourceContext order new RoutingDataSourceContext(query);}else{//写方法RoutingDataSourceContext order new RoutingDataSourceContext(update);}return invocation.proceed();}Overridepublic Object plugin(Object target){if(target instanceof Executor){return Plugin.wrap(target,this);}else{return target;}}Overridepublic void setProperties(Properties properties) {} } 三、spring集成多个Mybatis框架 实现多数据源控制 四、dynamic-datasource 多数据源组件
http://www.hkea.cn/news/14396239/

相关文章:

  • 邯郸wap网站制作深圳全网推广公司
  • 合肥建设网站哪个好北京建设招标信息网站
  • 网站开发薪水大一html网页制作期末源代码
  • 西安免费做网站哪家好汽车网站案例网页设计
  • 东莞做创意网站公司网站建设行为规定
  • 网站建设初步认识的实训体会免费下载网页模板
  • 自己做网站 最好的软件下载有什么做服装的网站吗
  • 北京网站建设北京做网站的注意点
  • 贵州遵义知名网站建设室内设计效果图高清
  • 潮州南桥市场中国建设银行网站深圳短视频推广收费
  • 万户网站建设搜狗推广效果好吗
  • qq中心官方网站灯光照明网站建设
  • 小型企业网站开发现状类似k站的网站
  • 免费建网站软件python语言特点有哪些
  • 网站建设评审会机关网站建设和运行情况汇报
  • 网站建设品牌阿里 wordpress 安装
  • 简洁的网站模板网站建设板块如何分类
  • 官网的网站设计公司长沙网站seo技巧
  • 福建建设银行官方网站网站备案都审核什么资料
  • 上海龙元建设网站如何建设网站教程视屏
  • 邢台做网站优化费用企业为什么网站建设
  • 台州网站推广做外贸网站那个平台好
  • 如何增强网站的安全性手机软件开发公司简介
  • 建立一个公司网站 宣传企业文化优弊端中铁航空港建设集团网站
  • 自己做网站怎么做的企业网站优化搜行者seo
  • 网站后台欢迎界面寓意前程似锦的工程公司名字
  • 西安建网站网站推广wordpress 禁止评论
  • 云南建设银行招聘网站中国十大房地产公司排名
  • 做外贸网站做成哪种形式好宿州网站建设报价
  • 台州椒江网站建设wordpress mysql扩展