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

广州企业网站排名安徽企业平台网站建设

广州企业网站排名,安徽企业平台网站建设,镇江丹阳建设局网站,重庆市建筑工程信息网官网楔子:当然,世上有很多优秀的女性,我也会被她们吸引。这对男人来说是理所当然的。但目光被吸引和内心被吸引是截然不同的。- 东野圭吾《黎明之街》 今日书签 在一些应用场景中,可能需要连接多个不同的数据库,例如连接不…

楔子:当然,世上有很多优秀的女性,我也会被她们吸引。这对男人来说是理所当然的。但目光被吸引和内心被吸引是截然不同的。- 东野圭吾《黎明之街》

今日书签

在一些应用场景中,可能需要连接多个不同的数据库,例如连接不同的数据库服务器或者连接主从数据库。这段代码就是为了实现这种多数据源的配置。

具体来说,这个类包含两个内部静态类:

  1. MyBatisDataSourceConfiguration4XMei: 这个类配置了第一个数据源,即 “xmei” 数据源。它使用了
    @Primary 注解来指示这是默认的主数据源。这个数据源配置了一个 Druid 数据源,并配置了与该数据源相关的
    SqlSessionFactory、事务管理器(DataSourceTransactionManager)和
    SqlSessionTemplate。@MapperScan 注解用于指示需要扫描哪些包下的 Mapper 接口,并使用特定的
    SqlSessionFactory。它还定义了 Mapper XML 文件的路径,以及事务管理和 SqlSessionTemplate。
  2. MyBatisDataSourceConfiguration4XWei: 这个类配置了第二个数据源,即 “xwei” 数据源。它没有使用
    @Primary 注解,因此不是默认的主数据源。它使用了 @Qualifier 注解来指定特定的 Bean
    名称,用于解决多个数据源的冲突。与第一个数据源类似,它配置了一个 Druid 数据源,并定义了与该数据源相关的
    SqlSessionFactory、事务管理器和 SqlSessionTemplate。

多数据源

使用 Service、Mapper、XML 所在包路径区分默认数据源 与 第二数据源。
直接看代码:

/*** 多数据源接入* dataSource4XMei 为 xmei 库,为默认数据源,正常使用,此处以外无其它配置* dataSource4XWei 为 xwei 库,为第二数据源,正常使用,此处以外无其它配置*/
@Configuration
public class MyBatisConfiguration {/*** 配置 SpringBoot 默认数据源,一般配置为主数据库,此为 xmei*/@Configuration@MapperScan(basePackages = {"com.cw.tan.xmei.persistence.*"}, sqlSessionFactoryRef = "sqlSessionFactory4XMei")protected static class MyBatisDataSourceConfiguration4XMei {@Bean@Primary@ConfigurationProperties("spring.datasource.druid.xmei")public DataSource dataSource4XMei() {return DruidDataSourceBuilder.create().build();}@Bean@Primarypublic SqlSessionFactory sqlSessionFactory4XMei(DataSource dataSource4XMei) throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource4XMei);sqlSessionFactoryBean.setMapperLocations(this.resolveMapperLocations());return sqlSessionFactoryBean.getObject();}private Resource[] resolveMapperLocations() {ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();List<String> mapperLocations = new ArrayList<>();mapperLocations.add("classpath*:com/cw/tan/xmei/persistence/**/*.xml");List<Resource> resources = new ArrayList();if (!CollectionUtils.isEmpty(mapperLocations)) {for (String mapperLocation : mapperLocations) {try {Resource[] mappers = resourceResolver.getResources(mapperLocation);resources.addAll(Arrays.asList(mappers));} catch (IOException e) {// ignore}}}return resources.toArray(new Resource[resources.size()]);}/*** 配置事务管理*/@Bean@Primarypublic DataSourceTransactionManager transactionManager4XMei(DataSource dataSource4XMei) {return new DataSourceTransactionManager(dataSource4XMei);}@Bean@Primarypublic SqlSessionTemplate sqlSessionTemplate4XMei(SqlSessionFactory sqlSessionFactory4XMei) {return new SqlSessionTemplate(sqlSessionFactory4XMei);}}/*** 配置第二数据源,注意 mapper 扫描路径和上面的区分开*/@Configuration@MapperScan(basePackages = {"com.cw.tan.xwei.log.mapper","com.cw.tan.xwei.sms.mapper", "com.cw.tan.xwei.job.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory4XWei")protected static class MyBatisDataSourceConfiguration4XWei {@Bean(name = "dataSource4XWei")@ConfigurationProperties("spring.datasource.druid.xwei")public DataSource dataSource4XWei() {return DruidDataSourceBuilder.create().build();}@Bean(name = "sqlSessionFactory4XWei")public SqlSessionFactory sqlSessionFactory4XWei(@Qualifier("dataSource4XWei") DataSource dataSource4XWei) throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource4XWei);sqlSessionFactoryBean.setMapperLocations(this.resolveMapperLocations());return sqlSessionFactoryBean.getObject();}private Resource[] resolveMapperLocations() {ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();List<String> mapperLocations = new ArrayList<>();mapperLocations.add("classpath*:com/cw/tan/xwei/log/**/*.xml");mapperLocations.add("classpath*:com/cw/tan/xwei/sms/**/*.xml");mapperLocations.add("classpath*:com/cw/tan/xwei/job/**/*.xml");List<Resource> resources = new ArrayList<>();if (!CollectionUtils.isEmpty(mapperLocations)) {mapperLocations.forEach(mapperLocation -> {try {Resource[] mappers = resourcePatternResolver.getResources(mapperLocation);resources.addAll(Arrays.asList(mappers));} catch (IOException e) {// ignore}});}return resources.toArray(new Resource[resources.size()]);}@Bean(name = "transactionManager4XWei")public DataSourceTransactionManager transactionManager4XWei(@Qualifier("dataSource4XWei") DataSource dataSource4XWei) {return new DataSourceTransactionManager(dataSource4XWei);}@Bean(name = "sqlSessionTemplate4XWei")public SqlSessionTemplate sqlSessionTemplate4XWei(@Qualifier("sqlSessionFactory4XWei") SqlSessionFactory sqlSessionFactory4XWei) {return new SqlSessionTemplate(sqlSessionFactory4XWei);}}
}

注意:上述配置,请确认自己的默认数据源、第二数据源对应Service、DAO文件所在的包路径,如果路径指向不对,可能会出现以下异常:
2023-08-17 16:09:33.981 [TID:] [main] WARN AnnotationConfigServletWebServerApplicationContext.refresh():559 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataDataSyncController’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.cw.tan.xwei.job.IDataSyncService’ available: expected single matching bean but found 2: dataSyncServiceImpl,IDataSyncService

总结

这段代码通过两个内部静态类分别配置了两个不同的数据源(xmei 和 xwei)。每个数据源配置了对应的 Druid 数据源、SqlSessionFactory、事务管理器和 SqlSessionTemplate。这种多数据源配置适用于需要访问多个不同数据库的场景,如在一个系统中同时连接多个数据库来进行不同的操作,比如主数据库和日志数据库、数据库与业务库数据同步等。

如果还需要扩展更多数据源,则可将上述 第二数据源配置 进行复制粘贴,然后做相应名称、包路径的修改即可。

http://www.yayakq.cn/news/530349/

相关文章:

  • 建筑人才网官方网站入口移动互联网app开发
  • 做网站学不需要做后台管理系统如何加速wordpress反应速度
  • wordpress连接管理插件seo实战密码电子书
  • 电影网站app怎么做做一电影网站的apk
  • 深圳网站的优化公司哪家好做网站公司 陕西渭南
  • 深圳网页制作培训天津百度快照优化公司
  • 做网站域名备案需要多久营销型企业网站有哪些
  • 福州网站建设信息宁波seo博客
  • 婚纱网站怎么做网络营销策划师
  • wp建站系统安卓应用下载
  • 安丘市住房与城市建设路网站网站空间 推荐
  • 网站建设适合手机阿里云做网站麻烦吗
  • 团购网站策划设计专业
  • 岗厦网站建设沧州网站建设益志科技
  • 龙华网站的建设简洁大方的电商网站模板
  • 新网站网页收录遵义app开发公司排名
  • 网站设计 电子购物网站设计网站建设对接流程
  • 北京营销网站建设设计证件照制作免费版
  • 合作社做网站有用吗但无法选择(select)wordpress数据库.
  • 网站管理员怎么登陆网站制作厦门
  • 绿色健康网站模板h5响应式网站建设报价
  • 红河个旧网站建设天津网站的优化
  • 廊坊建设部网站wordpress wiki 模版
  • 站长统计app进入网址90后做受网站
  • 做网站的必要网站栏目排序
  • 做商城类网站空间怎么买免费域名主机
  • 沈阳网站开发集团界面设计与制作专业学什么
  • 如何做一个简单的网站公司文化墙设计
  • 网站规划文字说明购物网站建设需求模板下载
  • 有哪几个平台做网站wordpress主题会员付费