mybatis多数据库连接配置方法简单实例

mybatis多数据库连接配置方法简单实例,第1张

mybatis多数据库连接配置方法简单实例 一、前言

最近一个Java项目中,需要配置多个不同的mybatis数据库连接,在此总结下配置方法。

【也可以叫做mybatis多数据源(DataSource)配置方法】

二、步骤

1.springboot项目中,在pom.xml中导入mybatis(或mybatis-plus)的jar包


  mysql
  mysql-connector-java
  8.0.16


  com.baomidou
  mybatis-plus-boot-starter
  3.1.2


  com.baomidou
  mybatis-plus-generator
  3.1.2


2.在配置文件application.properties中,编写好多个不同的数据源的配置信息,样例如下:

#spring.datasource.url=jdbc:mysql://10.123.123.123:3306/mydb
#spring.datasource.username=root
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#A数据源,连接数据库mydbA
spring.datasource.mydbA.jdbc-url=jdbc:mysql://10.123.123.123:3306/mydbA
spring.datasource.mydbA.username=root
spring.datasource.mydbA.password=root
spring.datasource.mydbA.driver-class-name=com.mysql.jdbc.Driver

#B数据源,连接数据库mydbB
spring.datasource.mydbB.jdbc-url=jdbc:mysql://10.123.123.123:3306/mydbB
spring.datasource.mydbB.username=root
spring.datasource.mydbB.password=root
spring.datasource.mydbB.driver-class-name=com.mysql.jdbc.Driver

上方配置了两个数据源连接,一个连接数据库mydbA,一个连接数据库mydbB(虽然数据库的ip一样,但是默认连接的数据库名不一样);
如有需要,修改为不同的数据库ip即可。

3.在项目中,新建一个java类,使用第一个数据源(连接mydbA数据库),样例如下:

//这个java类,可以扫描指定包com.mydbA.mapper下的自己写的Mapper.java文件
//这些Mapper.java中的sql默认使用mydbA数据库

@Configuration
@MapperScan(basePackages="com.mydbA.mapper", sqlSessionFactoryRef="myASqlSessionFactory")
public class ADataSourceConfig{

  //这样配置,就可以扫描上方application.properties中指定前缀的key,使用其value
  @Bean(name="ADataSource")
  @ConfigurationProperties(prefix="spring.datasource.mydbA")
  public DataSource aDataSource(){
    return DataSourceBuilder.create().build();
  }
  
  @Bean(name="myASqlSessionFactory")
  public SqlSessionFactory aSqlSessionFactory(@Qualifier("ADataSource")DataSource dataSource ) throws Exception {
    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
    ssfb.setDataSource(dataSource);
    //设置mybatis分页插件
    PageInterceptor pi = new PageInterceptor();
    Properties prop = new Properties();
    prop.setProperty("pageSizeZero","true");
    prop.setProperty("reasonable","true");
    pi.setProperties(prop);
    PageInterceptor[] pis = new PageInterceptor[]{pi};
    //设置
    ssfb.setPlugins(pis);
    return ssfb.getObject();
    
  }
}

4.在项目中,新建一个java类,使用第二个数据源(连接mydbB数据库),样例如下:

//这个java类,可以扫描指定包com.mydbB.mapper、com.mydbB.repository下的自己写的Mapper.java文件
//这些Mapper.java中的sql默认使用mydbB数据库

@Configuration
@MapperScan(basePackages={"com.mydbB.mapper","com.mydbB.repository"}, sqlSessionFactoryRef="myBSqlSessionFactory")
public class BDataSourceConfig{

  //这样配置,就可以扫描上方application.properties中指定前缀的key,使用其value
  @Bean(name="BDataSource")
  @ConfigurationProperties(prefix="spring.datasource.mydbB")
  public DataSource bDataSource(){
    return DataSourceBuilder.create().build();
  }
  
  @Bean(name="myBSqlSessionFactory")
  public SqlSessionFactory bSqlSessionFactory(@Qualifier("BDataSource")DataSource dataSource ) throws Exception {
    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
    ssfb.setDataSource(dataSource);
    //设置mybatis分页插件
    PageInterceptor pi = new PageInterceptor();
    Properties prop = new Properties();
    prop.setProperty("pageSizeZero","true");
    prop.setProperty("reasonable","true");
    pi.setProperties(prop);
    PageInterceptor[] pis = new PageInterceptor[]{pi};
    //设置
    ssfb.setPlugins(pis);
    return ssfb.getObject();
    
  }
}

5.这样就配置完毕了。

最终,spring容器中会有两个SqlSessionFactory对象,一个是myASqlSessionFactory,另一个是myBSqlSessionFactory(上方配置的)。

这两个分别使用不同的mapper.java,分别使用不同的数据源;也就实现了一个项目中配置多个mybatis数据库连接(数据库源)的目的

三、备注

如果需要同时配置jpa(hibernate)的数据源,可以参考本人的这篇文章:
spring项目同时配置mybatis与jpa(hibernate)
https://blog.csdn.net/BHSZZY/article/details/121951817

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5677685.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存