激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot整合Mybatis Plus多數據源的實現示例

SpringBoot整合Mybatis Plus多數據源的實現示例

2022-03-11 01:01陳彥斌 Java教程

本文主要介紹了SpringBoot整合Mybatis Plus多數據源的實現示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

導讀

有一個這樣子的需求,線上正在跑的業務,由于業務發展需要,需重新開發一套新系統,等新系統開發完成后,需要無縫對接切換,當初具體設計見草圖。

SpringBoot整合Mybatis Plus多數據源的實現示例

 

添加依賴

<!--lombok-->
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.16</version>
          <!--scope=provided,說明它是在編譯階段生效,不需要打入包中,Lombok在編譯期將帶Lombok注解的Java文件正確編譯為完整的Class文件-->
          <scope>provided</scope>
      </dependency>
      <!--mysql-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
      </dependency>
      <!--mybatis plus和spring boot整合-->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.4.0</version>
      </dependency>
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.10</version>
      </dependency>

 

application.properties

server.port=9999
spring.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.master.url=jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.master.username=root
spring.datasource.master.password=root

spring.datasource.slave.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.slave.jdbc-url=jdbc:mysql://127.0.0.1/test2?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.slave.username=root
spring.datasource.slave.password=root

 

2種方式創建DataSource

Master配置,使用druid連接池

import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;

import javax.sql.DataSource;

/**
* @Author:chenyanbin
*/
@Configuration
@MapperScan(basePackages = "com.example.demo.mapper", sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MasterDataSourceConfig {
  @Autowired
  private Environment env;

  @Primary
  @Bean(name = "masterDataSource")
//    @ConfigurationProperties("spring.datasource.master")
  public DataSource masterDataSource() {
//        return DataSourceBuilder.create().build();
      DruidDataSource dataSource = new DruidDataSource();
      dataSource.setUrl(env.getProperty("spring.datasource.master.url"));
      dataSource.setUsername(env.getProperty("spring.datasource.master.username"));
      dataSource.setPassword(env.getProperty("spring.datasource.master.password"));
      dataSource.setDriverClassName(env.getProperty("spring.datasource.master.driver-class-name"));
      //配置初始化大小、最小、最大
      dataSource.setMinIdle(10);
      //配置初始化大小、最小、最大
      dataSource.setMaxActive(200);
      //配置初始化大小、最小、最大
      dataSource.setInitialSize(10);
      //配置獲取連接等待超時的時間
      dataSource.setMaxWait(60000);
      //配置一個連接在池中最小生存的時間,單位是毫秒
      dataSource.setMinEvictableIdleTimeMillis(300000);
      //配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
      dataSource.setTimeBetweenEvictionRunsMillis(60000);
      //默認的testWhileIdle=true,testOnBorrow=false,testOnReturn=false
      dataSource.setValidationQuery("SELECT 1");
      //申請連接時執行validationQuery檢測連接是否有效
      dataSource.setTestOnBorrow(false);
      //建議配置為true,不影響性能,并且保證安全性。
      dataSource.setTestWhileIdle(true);
      //是否緩存preparedStatement,也就是PSCache
      dataSource.setPoolPreparedStatements(false);
      return dataSource;
  }

  @Bean(name = "masterSqlSessionFactory")
  public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
      MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
      sessionFactoryBean.setDataSource(dataSource);

      return sessionFactoryBean.getObject();
  }
}

Slave配置

import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
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 javax.sql.DataSource;

/**
* @Author:chenyanbin
*/
@Configuration
@MapperScan(basePackages = "com.example.demo.mapper2",sqlSessionFactoryRef = "slaveSqlSessionFactory")
public class SlaveDataSourceConfig {
  @Bean(name = "slaveDataSource")
  @ConfigurationProperties("spring.datasource.slave")
  public DataSource slaveDataSource(){
      return DataSourceBuilder.create().build();
  }

  @Bean(name = "slaveSqlSessionFactory")
  public SqlSessionFactory sqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
      MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
      sessionFactoryBean.setDataSource(dataSource);
      return sessionFactoryBean.getObject();
  }
}

注意

  master和slave掃描不同的mapper包路徑?。。。。。?/p>

  如果需要指定.xml文件,需這樣配置?。?!

  @Bean(name = "masterSqlSessionFactory")
  public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
      MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
      sessionFactoryBean.setDataSource(dataSource);
      sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
              .getResources("classpath:mapper/**/*.xml"));
      return sessionFactoryBean.getObject();
  }

SpringBoot整合Mybatis Plus多數據源的實現示例

MybatisPlus分頁插件設置

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* MybatisPlus分頁配置
*
* @Author:chenyanbin
*/
@Configuration
public class MybatisPlusPageConfig {

  /**
   * 新版分頁插件
   *
   * @return
   */
  @Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
      MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
      mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
      return mybatisPlusInterceptor;
  }
}
@Bean(name = "masterSqlSessionFactory")
  public SqlSessionFactory sqlSessionFactory(
          @Qualifier("masterDataSource") DataSource dataSource,
          @Qualifier("mybatisPlusInterceptor") MybatisPlusInterceptor mybatisPlusInterceptor
  ) throws Exception {
      MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
      sessionFactoryBean.setDataSource(dataSource);
      sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
              .getResources("classpath:mapper/**/*.xml"));
      sessionFactoryBean.setPlugins(mybatisPlusInterceptor);
      return sessionFactoryBean.getObject();
  }

 

啟動類

@SpringBootApplication(
exclude = {DataSourceAutoConfiguration.class, MybatisPlusAutoConfiguration.class}
)

啟動類上排查,自動裝配,使用我們自定義的多數據源!??!

 

演示

SpringBoot整合Mybatis Plus多數據源的實現示例

SpringBoot整合Mybatis Plus多數據源的實現示例

  多個數據源,同時也是支持事務的

到此這篇關于SpirngBoot整合Mybatis Plus多數據源的實現示例的文章就介紹到這了,更多相關SpirngBoot MybatisPlus多數據源內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/chenyanbin/p/15504125.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产91精品久久久久久久 | 毛毛片在线看 | 成人毛片在线免费观看 | 一级尻逼视频 | 免费永久看羞羞片网站入口 | 黄色高清免费 | 一区二区三区四区高清视频 | 日本视频免费看 | 激情欧美在线 | 蜜桃网在线 | 一级免费大片 | 在线看一区二区三区 | 成年免费观看视频 | 毛片一级免费看 | 精品国产一区二区三区在线观看 | 日本在线一区二区 | 欧美交在线 | 黄色大片大毛片 | 国产视频aa | 狠狠操操| 国产91中文字幕 | 九九热视频免费 | 欧美一级特黄aaaaaaa什 | 激情网站免费观看 | 欧美日韩在线视频一区 | 一级片a | 免费看国产 | 在线成人一区二区 | 日本成年免费网站 | 91 在线免费观看 | 国产精品毛片va一区二区三区 | 99国产精成人午夜视频一区二区 | 国产精品视频导航 | 日本a∨精品中文字幕在线 狠狠干精品视频 | 午夜激情视频免费 | 999久久久 | 色七七亚洲 | 午夜精品小视频 | 国产精品18久久久久久久 | videos韩国| 国产成人免费精品 |