Springboot mybais配置多数据源过程解析

  

一、分包方式实现:

  

1,在application.properties中配置两个数据库:

  
  

#德鲁伊连接池
  # dataSoureOne(这里是我本地的数据源)
  spring.datasource.one.type=com.alibaba.druid.pool。DruidDataSource
  spring.datasource.one.driver-class-name=com.mysql.jdbc。司机
  spring.datasource.one.jdbc-url=jdbc: mysql://localhost: 3306/测试# 63;useUnicode=true& characterEncoding=utf-8& useSSL=false& serverTimezone=UTC
  spring.datasource.one。用户名=根
  spring.datasource.one。密码=根
  # dataSoureTwo(这里是我们服务器的数据源)
  spring.datasource.two.type=com.alibaba.druid.pool。DruidDataSource
  spring.datasource.two.driver-class-name=com.mysql.jdbc。司机
  spring.datasource.two.jdbc-url=jdbc: mysql://xx.xxx.xx.xxx: 3306/kds_master_info& # 63; useUnicode=true& characterEncoding=utf-8& useSSL=false& serverTimezone=UTC
  spring.datasource.two。用户名=根
  spring.datasource.two.password=KDSmaster123

     

2,建立连个数据源的配置文件:

  

注意下面数据源包引入的是进口javax.activation.DataSource;

        @ configuration//配置mybatis的接口类放的地方   @MapperScan (basePackages=" com.example.mybatis。映射器”,sqlSessionFactoryRef=" sqlSessionFactoryOne”)   公开课DataSourceConfigOne {      @ bean (name=" dataSourceOne ")   @Primary//表示这个数据源是默认数据源//读取application.properties中的配置参数映射成为一个对象,前缀表示参数的前缀   @ConfigurationProperties(前缀=皊pring.datasource.one”)   公共数据源dataSourceOne () {   .build返回DataSourceBuilder.create () ();   }      @ bean (name=" sqlSessionFactoryOne ")   @Primary   公共SqlSessionFactory sqlSessionFactoryOne (@ qualifier (dataSourceOne)数据源的数据源){抛出异常   SqlSessionFactoryBean bean=new SqlSessionFactoryBean ();   bean.setDataSource(数据源);   bean.setMapperLocations (//设置mybatis的xml所在位置   新的PathMatchingResourcePatternResolver () .getResources(“类路径:mapper/* . xml”));.getConfiguration bean.getObject () () .setMapUnderscoreToCamelCase(真正);返回bean.getObject ();   }      @Primary   公共SqlSessionTemplate sqlsessiontemplateOne (@ qualifier (sqlsessiontemplateOne) SqlSessionFactory sessionfactory) {   返回新SqlSessionTemplate (sessionfactory);   }   }            @ configuration   @MapperScan (basePackages=" com.example.mybatis。mapper2”, sqlSessionFactoryRef=" sqlSessionFactoryTwo”)   公开课DataSourceConfigTwo {   @ bean (name=" dataSourceTwo ")//读取application.properties中的配置参数映射成为一个对象,前缀表示参数的前缀   @ConfigurationProperties(前缀=皊pring.datasource.two”)   公共数据源dataSourceTwo () {   .build返回DataSourceBuilder.create () ();   }      @ bean (name=" sqlSessionFactoryTwo ")   公共SqlSessionFactory sqlSessionFactoryTwo (@ qualifier (dataSourceTwo)数据源的数据源){抛出异常   SqlSessionFactoryBean bean=new SqlSessionFactoryBean ();   bean.setDataSource ((javax.sql.DataSource)数据源);   bean.setMapperLocations (//设置mybatis的xml所在位置   新的PathMatchingResourcePatternResolver () .getResources(“类路径:mapper2/* . xml”));.getConfiguration bean.getObject () () .setMapUnderscoreToCamelCase(真正的);   返回bean.getObject ();   }      公共SqlSessionTemplate sqlsessiontemplateTwo (@ qualifier (sqlsessiontemplateTwo) SqlSessionFactory sessionfactory) {   返回新SqlSessionTemplate (sessionfactory);   }   }      

注意:1、@Primary这个注解必须要加,因为不加的话春天将分不清楚那个为主数据源(默认数据源)2,映射器的接口,xml形式以及dao层都需要两个分开,目录如图:

  

 Springboot mybais配置多数据源过程解析

  

3, bean。setMapperLocations(新PathMatchingResourcePatternResolver () .getResources (“XXXX”));映射的xml形式文件位置必须要配置,不然将报错:没有声明(这种错误也可能是映射的xml中,名称空间与项目的路径不一致导致的)

  

4,在服务层中根据不同的业务注入不同的dao层:

  

 Springboot mybais配置多数据源过程解析

  

 Springboot mybais配置多数据源过程解析

Springboot mybais配置多数据源过程解析