springboot配置多数据源(连接多个数据库)

您所在的位置:网站首页 聚合书库:免费追更多个数据源 springboot配置多数据源(连接多个数据库)

springboot配置多数据源(连接多个数据库)

2024-07-10 07:33| 来源: 网络整理| 查看: 265

配置多数据源主要是连接多个数据库,所以配置的时候主要是把mapper和mapper.xml 按照各自的进行匹配上就可以了。 第一步:首先配置数据库连接(yml)

spring: datasource: one: driver-class-name: com.mysql.jdbc.Driver jdbc-url: "jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding\ =utf8&useJDBCCompliantTimezoneShift=true\ &useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&useSSL=true&allowMultiQueries=true&autoReconnect=true&useAffectRows=true" username: root password: root two: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc-url: jdbc:sqlserver://localhost:1433;DatabaseName=xxxx//1433 sqlService 默认端口 username: sa//默认用户名 password: root

第二步:配置数据源

(1)mysql数据源

/** * @author: 张三 * @date: 2020-08-13 09:47:36 */ @Configuration //第一个包扫描 @MapperScan(basePackages = {"xx.xx.xx.dao.xxdao"}, sqlSessionFactoryRef = "oneSqlSessionFactory") public class OneDataSourceConfig { @Value("${spring.datasource.one.driver-class-name}") String driverClass; @Value("${spring.datasource.one.jdbc-url}") String url; @Value("${spring.datasource.one.username}") String userName; @Value("${spring.datasource.one.password}") String passWord; @Primary @Bean(name = "oneDataSource") @ConfigurationProperties("spring.datasource.one") public DataSource oneDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(userName); dataSource.setPassword(passWord); return dataSource; } @Bean(name = "oneSqlSessionFactory") @Primary public SqlSessionFactory oneSqlSessionFactory(@Qualifier("oneDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath*:mapper/xxxMapper/*.xml"));//第一个mapper.xml //配置多数据源需要设置驼峰规则,否则不生效 org.apache.ibatis.session.Configuration configuration=new org.apache.ibatis.session.Configuration(); configuration.setMapUnderscoreToCamelCase(true); sessionFactoryBean.setConfiguration(configuration); return sessionFactoryBean.getObject(); } @Bean(name = "oneSqlSessionTemplate") @Primary public SqlSessionTemplate oneSqlSessionFactoryTemplate(@Qualifier("oneSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }

(2)sqlServer数据源

/** * @program: * @description: 数据库配置2 * @author: wys * @create: 2019-12-03 17:03 **/ @Configuration @MapperScan(basePackages = "xx.xx.xx.xx.xxdao",sqlSessionFactoryRef = "twoSqlSessionFactory") public class TwoDataSourceConfig { @Value("${spring.datasource.two.driver-class-name}") String driverClass; @Value("${spring.datasource.two.jdbc-url}") String url; @Value("${spring.datasource.two.username}") String userName; @Value("${spring.datasource.two.password}") String passWord; @Bean(name = "twoDataSource") @ConfigurationProperties("spring.datasource.two") public DataSource masterDataSource(){ DriverManagerDataSource dataSource = new DriverManagerDataSource(); // dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(userName); dataSource.setPassword(passWord); return dataSource; } @Bean(name = "twoSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("twoDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath*:/mapper/xxMapper/*.xml")); //**配置多数据源需要设置驼峰规则,否则不生效** org.apache.ibatis.session.Configuration configuration=new org.apache.ibatis.session.Configuration(); configuration.setMapUnderscoreToCamelCase(true); sessionFactoryBean.setConfiguration(configuration); return sessionFactoryBean.getObject(); } @Bean(name = "twoSqlSessionTemplate") public SqlSessionTemplate sqlSessionFactoryTemplate(@Qualifier("twoSqlSessionFactory")SqlSessionFactory sqlSessionFactory ) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }

这样配置基本上就OK了 下面就是对应的mapper和mapper.xm一一对应就可以了,直接上图,秒懂 在这里插入图片描述

本人在使用中出现了一些小问题,总结一下: 第一个就是配置后一直连接不上,问题是我在springboot项目中使用了tk通用mapper 所以有的有dao但是没有对应的dao.xml 所以扫描会出现问题,调用的时候就会出现问题,连接不上。可以使用自动生成代码工具实现mybatis generator 解决这个小问题,全自动写代码。

第二个问题,配置后驼峰规则不生效的问题的,因为你配置的是多数据源所以你即使在yml设置了驼峰规格开始状态 设置为true,还是不生效的。

configuration: map-underscore-to-camel-case: true

估计是识别不了你用的哪个数据库,所以就不管了,这个是个人理解,如果不对请私信纠正。我在上面的数据源配置中已经加上了设置开始驼峰规则,所以大家用的话直接粘贴就可以了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3