马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
近期刚刚完成毕业设计,项目中必要使用两处数据库,分布是为网页提供数据的Mysql数据库和提供Corda区块链数据的H2数据库,一并连接展示于网页上。基于此本文提供一种方法。
一、项目结构
相比于原版的项目,如果必要连接两个数据库则必要创建两个文件夹,分别为config文件夹和mapper文件夹中新创立的baseMapper和testMapper文件夹,分别存放Mysql数据中的查询语句和H2的查询语句。
如果不是在Mapper中以解释的方式写查询语句,就可以在resources文件夹的xml文件中修改mapper中namespace的位置,如下图:
二、所需依靠
pom.xml文件如下
三、具体配置
在config文件夹中分别创建DataSourceOneConfig和DataSourceTwo两个文件,分别存放Mysql和H2的数据库配置,此中必要根据本身项目的具体配置来改写MapperScan和getResources中的mapper路径,配置的具体代码如下。
DataSourceOneConfig:
- package org.example.config;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.SqlSessionTemplate;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.jdbc.DataSourceBuilder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.mybatis.spring.annotation.MapperScan;
- import javax.sql.DataSource;
- @Configuration
- @MapperScan(basePackages = "org.example.mapper.baseMapper", sqlSessionTemplateRef = "db1SqlSessionTemplate")
- public class DataSourceOneConfig {
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.one")
- @Primary
- public DataSource db1DataSource() {
- return DataSourceBuilder.create().build();
- }
- @Bean
- @Primary
- public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(dataSource);
- bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:org/example/mapper/*.xml"));
- return bean.getObject();
- }
- @Bean
- @Primary
- public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
- return new DataSourceTransactionManager(dataSource);
- }
- @Bean
- @Primary
- public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
- return new SqlSessionTemplate(sqlSessionFactory);
- }
- }
复制代码 DataSourceTwoConfig:
- package org.example.config;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.SqlSessionTemplate;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.jdbc.DataSourceBuilder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.mybatis.spring.annotation.MapperScan;
- import javax.sql.DataSource;
- @Configuration
- @MapperScan(basePackages = "org.example.mapper.testMapper", sqlSessionTemplateRef = "db2SqlSessionTemplate")
- public class DataSourceTwoConfig {
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.two")
- public DataSource db2DataSource() {
- return DataSourceBuilder.create().build();
- }
- @Bean
- public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(dataSource);
- //bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
- return bean.getObject();
- }
- @Bean
- public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
- return new DataSourceTransactionManager(dataSource);
- }
- @Bean
- public SqlSessionTemplate db2SqlSessionTemplate(@Qualifier("db2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
- return new SqlSessionTemplate(sqlSessionFactory);
- }
- }
复制代码 创建好以上配置文件后,在application.yml中添加第二个数据库配置,如下:
- spring:
- datasource:
- one:
- type: com.alibaba.druid.pool.DruidDataSource
- driver-class-name: com.mysql.cj.jdbc.Driver
- jdbc-url: jdbc:mysql://localhost:3306/big_event
- username: root
- password: 7777777
- two:
- type: com.alibaba.druid.pool.DruidDataSource
- driver-class-name: org.h2.Driver
- jdbc-url: jdbc:h2:tcp://localhost:10007/node
- username: sa
- password:
复制代码 完成以上步调后,在mapper中创建相应的文件夹,放入对应的Mapper接口(此处包的名称一定要和之前在config中配置的一样):
以上步调均完成后,再调用不同包中的Mapper接口就可以实现多数据库连接了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |