您的位置:首页 > 汽车 > 时评 > 网页浏览器打不开_桂林市中心在哪个区_公司要做seo_推广app拉人头赚钱

网页浏览器打不开_桂林市中心在哪个区_公司要做seo_推广app拉人头赚钱

2025/1/6 17:46:08 来源:https://blog.csdn.net/m0_60741007/article/details/144772402  浏览:    关键词:网页浏览器打不开_桂林市中心在哪个区_公司要做seo_推广app拉人头赚钱
网页浏览器打不开_桂林市中心在哪个区_公司要做seo_推广app拉人头赚钱

项目场景:

在工作中很多情况需要跨数据库进行数据操作,自己总结的经验希望对各位有所帮助


问题描述

总结了几个问题

1.识别不到mapper

2.识别不到xml

3.找不到数据源


原因分析:

1.配置文件编写导致识别mapper

2.配置类编写建的格式有问题

3.命名问题大小写


解决方案:

1.检查application配置文件的扫描是否开启路径是否正确

2.检查配置文件的拼写缩进,application的拼写缩进特别严格建议自己写不要粘贴复制

3.命名大小写或者多字母少字母导致找不到

配置相关代码:

在config新建几个数据配置文件用于访问和切换数据源

DatasourceConfig类

这里是通过

ConfigurationProperties注解获取映射你application的数据源名称这里不要写错一定注意

然后交给bean管理;

下面的

dynamicDataSource是调用spring自带的一个的抽象类用于切换数据源使用的
@Bean("db1")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource dataSourceOne(){return DataSourceBuilder.create().build();
}
@Bean("db2")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource dataSourceTwo(){return DataSourceBuilder.create().build();
}
@Bean(name = "dynamicDataSource")
@Primary
public DataSource dynamicDataSource(@Qualifier("db1") DataSource db1,@Qualifier("db2") DataSource db2){DynamicDataSource dynamicDataSource = new DynamicDataSource();dynamicDataSource.setDefaultTargetDataSource(db1);HashMap<Object, Object> dsMap = new HashMap<>();dsMap.put("db1",db1);dsMap.put("db2",db2);dynamicDataSource.setTargetDataSources(dsMap);return dynamicDataSource;
}
@Bean
public PlatformTransactionManager transactionManager(@Qualifier("dynamicDataSource") DataSource dynamicDataSource){return new DataSourceTransactionManager(dynamicDataSource);
}
DynamicDataSource类

determineCurrentLookupKey用来指定数据源这里获取到传过来的名称联合DataSourceUtil进行指定使用哪个数据源

@Slf4j
public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {log.info("动态数据源获取--{}", DataSourceUtil.getDB());return DataSourceUtil.getDB();}
}

public class DataSourceUtil {private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();public static void setDB(String dbType){contextHolder.set(dbType);}public static String getDB(){return  contextHolder.get();}public static void clearDB(){contextHolder.remove();}
}

最后的 这里定义一个事务管理器PlatformTransactionManager 通过

@Qualifier注解将切换数据源的配置类进行注入

然后是调用 DataSourceUtil

DataSourceUtil 类是基于 ThreadLocal 实现的,用于动态管理数据源的标识,整体代码简洁且符合常见的动态数据源切换需求,使用 ThreadLocal 实现线程上下文绑定,用于存储和管理当前线程的数据源标识,setDB就是写入设置绑定数据源标识,这里的名字必须和配置文件的名字对应上基本就可以实现切换数据原了

这里是配置文件的写法注意缩写和依赖包导入这里我就不多赘述了

spring:datasource:db1:driver-class-name: dm.jdbc.driver.DmDriverjdbc-url: jdbc:dm://123456789:5524/CCS_HBusername: CCSpassword: CCS.db2:enabled: truedriver-class-name: oracle.jdbc.OracleDriverjdbc-url: jdbc:oracle:thin:@//123456789:1521/hbfspdbusername: userpassword: user

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com