一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實(shí)現(xiàn)示例

SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實(shí)現(xiàn)示例

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

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

導(dǎo)讀

有一個(gè)這樣子的需求,線上正在跑的業(yè)務(wù),由于業(yè)務(wù)發(fā)展需要,需重新開發(fā)一套新系統(tǒng),等新系統(tǒng)開發(fā)完成后,需要無縫對(duì)接切換,當(dāng)初具體設(shè)計(jì)見草圖。

SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實(shí)現(xiàn)示例

 

添加依賴

<!--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種方式創(chuàng)建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);
      //配置獲取連接等待超時(shí)的時(shí)間
      dataSource.setMaxWait(60000);
      //配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒
      dataSource.setMinEvictableIdleTimeMillis(300000);
      //配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒
      dataSource.setTimeBetweenEvictionRunsMillis(60000);
      //默認(rèn)的testWhileIdle=true,testOnBorrow=false,testOnReturn=false
      dataSource.setValidationQuery("SELECT 1");
      //申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效
      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包路徑?。。。。?!

  如果需要指定.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多數(shù)據(jù)源的實(shí)現(xiàn)示例

MybatisPlus分頁插件設(shè)置

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();
  }

 

啟動(dòng)類

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

啟動(dòng)類上排查,自動(dòng)裝配,使用我們自定義的多數(shù)據(jù)源?。?!

 

演示

SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實(shí)現(xiàn)示例

SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實(shí)現(xiàn)示例

  多個(gè)數(shù)據(jù)源,同時(shí)也是支持事務(wù)的

到此這篇關(guān)于SpirngBoot整合Mybatis Plus多數(shù)據(jù)源的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpirngBoot MybatisPlus多數(shù)據(jù)源內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲毛片在线 | 26uuu成人人网图片 | 四虎影院在线免费观看 | ssni-497新任美脚女教师 | 美女视频一区二区三区在线 | 国产专区视频在线观看 | 国产欧美日韩在线不卡第一页 | 日本免费全黄一级裸片视频 | 王晶经典三级 | 1769国产精品免费视频 | 日本中文字幕一区二区高清在线 | 日本一区二区三区久久精品 | 丰满大乳欲妇三级k8 | 亚洲经典激情春色另类 | 4444亚洲国产成人精品 | 国产精品第一区揄拍 | 糖心视频在线观看 | 久久草福利自拍视频在线观看 | 婷婷综合在线 | 亚洲一区二区三区不卡在线播放 | 婷婷色天使在线视频观看 | 波多野结衣女老师 | 男女男精品视频免费观看 | 日本在线视频网 | 成人影院在线观看视频 | 大胸被c出奶水嗷嗷叫 | 国产高清经典露脸3p | 互换身体全集免费观看 | 亚洲成人网导航 | 国产免费资源高清小视频在线观看 | 午夜伦理yy44008影院 | 日本美女xx | 国产精品免费久久久久影院小说 | 日本福利视频一区 | 国产色司机在线视频免费观看 | 日韩丝袜在线观看 | 国产午夜精品久久理论片小说 | 亚洲视频男人的天堂 | 国产色图片 | 欧美国产日产精品免费视频 | 国产精品怡红院在线观看 |