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

代理怎么做北京专业seo公司

代理怎么做,北京专业seo公司,成都有哪些网站建设,为什么百度搜出来的网站只有网址没有网站名和网页摘要.在我们日常的开发中#xff0c;经常会用到一个项目中使用多个数据源的问题#xff0c;本次就带你了解怎样在spring boot项目中使用mybatis整合多个数据源的示例。使用spring boot3.5版本 1、创建一个spring boot项目#xff0c;并引入相应的maven依赖 dependencies…在我们日常的开发中经常会用到一个项目中使用多个数据源的问题本次就带你了解怎样在spring boot项目中使用mybatis整合多个数据源的示例。使用spring boot3.5版本 1、创建一个spring boot项目并引入相应的maven依赖 dependenciesdependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-openapi3-jakarta-spring-boot-starter/artifactIdversion4.5.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion3.0.3/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.20/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies2、在配置文件中设置相应的连接信息 spring:datasource:# 主数据源zh:jdbc-url: jdbc:mysql://localhost:3306/zh?useSSlfalseuseUnicodetruecharacterEncodingutf-8serverTimezoneUTCusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driver# 次数据源en:jdbc-url: jdbc:mysql://localhost:3306/en?useSSlfalseuseUnicodetruecharacterEncodingutf-8serverTimezoneUTCusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driver mybatis:mapper-locations: classpath:/mapper/**/*.xmlconfiguration:map-underscore-to-camel-case: true 这里需要注意的一点是我们引入了mybatis-springboot的自动装配的依赖那么项目在启动的时候会检查我们有没有配置默认的数据源连接信息如果没有配置会报错。这个时候我们有两种解决思路。一种是在配置文件中指定一下连接信息但是这个数据连接信息我们不用另一种是把数据源自动配置的bean给排除掉。需要在启动类上指定 SpringBootApplication(exclude {DataSourceAutoConfiguration.class}) 3、手动指定多数据源的连接配置 我的项目中是指定了两套数据源分别为zh、en。我只需要配置两套数据连接信息即可 配置zh数据库的连接配置 Configuration MapperScan(basePackages com.zq.testmybatis.mapper.zh,sqlSessionFactoryRef zhSqlSessionFactory ) public class ZhMyBatisConfig {/*** 创建并返回一个以 spring.datasource.zh 为前缀的配置属性绑定的数据源对象。** return DataSource 对象*/PrimaryBeanConfigurationProperties(prefix spring.datasource.zh)public DataSource zhDataSource() {return DataSourceBuilder.create().build();}/*** 创建中文数据库SQL会话工厂。** param dataSource 数据源必须被标注为Qualifier(zhDataSource)* return SqlSessionFactory 对象* throws Exception 抛出异常*/PrimaryBeanpublic SqlSessionFactory zhSqlSessionFactory(Qualifier(zhDataSource) DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);// 重点手动启用驼峰映射org.apache.ibatis.session.Configuration configuration new org.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true); // 启用驼峰映射sessionFactory.setConfiguration(configuration);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mapper/zh/**/*.xml));return sessionFactory.getObject();}/*** 创建一个名为zhSqlSessionTemplate的SqlSessionTemplate对象该对象使用名为zhSqlSessionFactory的SqlSessionFactory。** param sqlSessionFactory 类型为SqlSessionFactory用于创建SqlSessionTemplate对象的SqlSessionFactory。* return 返回类型为SqlSessionTemplate的zhSqlSessionTemplate对象。*/PrimaryBeanpublic SqlSessionTemplate zhSqlSessionTemplate(Qualifier(zhSqlSessionFactory) SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);} }配置en数据库的连接信息 Configuration MapperScan(basePackages com.zq.testmybatis.mapper.en,sqlSessionFactoryRef enSqlSessionFactory ) public class EnMyBatisConfig {/*** 创建并返回一个名为 enDataSource 的数据源。** return 返回一个配置为 spring.datasource.en 前缀的配置属性的数据源*/BeanConfigurationProperties(prefix spring.datasource.en)public DataSource enDataSource() {return DataSourceBuilder.create().build();}/*** 创建一个 SqlSessionFactory Bean使用指定的数据源。** param dataSource 数据源通过 Qualifier 注解指定* return SqlSessionFactory 对象* throws Exception 如果在创建 SqlSessionFactory 过程中发生异常*/Beanpublic SqlSessionFactory enSqlSessionFactory(Qualifier(enDataSource) DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);// 重点手动启用驼峰映射org.apache.ibatis.session.Configuration configuration new org.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true); // 启用驼峰映射sessionFactory.setConfiguration(configuration);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mapper/en/**/*.xml));return sessionFactory.getObject();}/*** 创建一个SqlSessionTemplate对象** param sqlSessionFactory 数据库会话工厂通过Qualifier注解指定使用enSqlSessionFactory* return 返回创建的SqlSessionTemplate对象*/Beanpublic SqlSessionTemplate enSqlSessionTemplate(Qualifier(enSqlSessionFactory) SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);} }这里需要我们注意的主要有两点mapper接口的扫射路径、XML文件的扫射路径 还有一点要注意的是由于我们是手动指定了XML路径的连接信息所有如果spring项目在启动时扫描到你指定的XML地址下没有相应的XML文件时项目会报错。 4、使用多数据源 配置好了以上的所有信息之后我们就可以正常的使用mapper接口来进行数据操作了。这里要提醒的一点是两个数据源的mapper接口尽量不要相同因为我们是在同一个spring boot中也就是这两个mapper接口都会被扫描到IOC容器中。 RestController public class TestController { Resourceprivate EnUserMapper enUserMapper; Resourceprivate ZhUserMapper zhUserMapper; PostMapping(/addEnUser) public String addEnUser(RequestBody EnUser enUser) {enUserMapper.insert(enUser);return success; } GetMapping(/getEnUser) public ListEnUser getEnUser() {return enUserMapper.listAll(); }PostMapping(/addZHUser)public String addZhUser(RequestBody ZhUser zhUser) {zhUserMapper.insert(zhUser);return success;} GetMapping(/getZhUser)public ListZhUser getZhUser() {return zhUserMapper.listAll();}}就和我们正常使用一样就可以了 5、多数据源的事务一致性 在单个数据源中我们只需要使用Transactional注解就能保证事务的一致性但是在多数据源中不行但是同样有解决的办法我们可以使用JTA分布式事务Atomikos或者分布式事务seata 首先介绍一下JTA是基于XA协议的两阶段提交2PC属于Java EE规范的一部分。事务由应用服务器如WebLogic、JBoss的事务管理器TM协调数据库作为资源管理器RM实现XA接口它的工作流程为 阶段一TM询问所有RM是否可提交RM锁定资源并返回准备状态。 阶段二TM根据RM反馈决定全局提交或回滚。特点强一致性但存在同步阻塞阶段一锁定资源和单点故障风险。 seata是阿里巴巴开源分布式事务框架相应的特性可以看我之前写的这篇文章 seata的快速入门和实战_seata快速入门-CSDN博客 维度JTA/XASeata事务模型基于XA协议的2PC支持AT、TCC、Saga、XA多种模式一致性强一致性实时生效AT模式为最终一致性TCC/XA为强一致性性能低阶段一长期锁资源高AT模式一阶段提交释放锁14侵入性无代码侵入依赖数据库XA驱动AT模式无侵入TCC需业务编码补偿逻辑57架构依赖强依赖应用服务器如WebLogic独立中间件与Spring Cloud等微服务框架集成26资源要求数据库需支持XA协议AT模式无需XA驱动仅需本地事务支持13锁机制数据库行锁AT模式通过全局锁lock_table避免脏写 这两种方法都能解决多数据源的数据不一致问题具体使用哪一种就看你自己的业务场景了。
http://www.w-s-a.com/news/240284/

相关文章:

  • 杭州建设实名制报备网站Wordpress外贸网站搭建公司
  • 山西云起时网站建设计算机网站开发实现总结
  • 一个网站做两个优化可以做吗永清网站建设
  • wordpress英文采集wordpress seo 链接
  • 进入建设银行的网站就打不了字工程建设标准化网站
  • 杭州网站推广大全网站建设演讲稿
  • 厦门网站的制作太仓专业网站建设
  • 天津公司网站建设公司哪家好在阿里巴巴国际网站上需要怎么做
  • 网站关键词seo推广公司哪家好无锡市无锡市住房和城乡建设局网站
  • 开远市新农村数字建设网站网站如何做QQ登录
  • 自己做个网站教程高端网站开发哪家强
  • 网站模板免费下载中文版大连网站建设哪家专业
  • 网站建设的基本代理公司注册公司坑人
  • 企业网站被黑后如何处理wordpress邮件发送类
  • 北京网站的网站建设公司建设工程竣工验收消防备案网站
  • 淄博市 网站建设报价wordpress里的发消息给我
  • 网站下拉菜单怎么做游戏网站模板免费下载
  • 阿里云上做网站套模板怎么做一个网站开发小组
  • 营销型网站源码下载青岛做网站建设的公司哪家好
  • 迁西网站定制怎么制作网址内容
  • 深圳装饰公司网站宁波网站建设哪里有
  • 建站网站破解版怎么看自己的网站是用什么做的
  • 做微商那个网站好织梦模板更新网站
  • 网站注册表单怎么做手机做网站需要多少天
  • 书店商城网站html模板下载企业网站建设方案书范文
  • 建设网站是普通办公吗快速排名seo软件
  • 大型外贸网站建设网站建设图片尺寸要求
  • 网站建设可信赖北京网站开发月薪
  • 专门做lolh的网站wordpress 模版 cho's
  • 网上做设计兼职哪个网站好点网站开发毕业周记