国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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包路徑!!!!!!

  如果需要指定.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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品区一区二区三含羞草 | 成人国内精品久久久久一区 | 亚洲欧美视频播放 | 欧美日韩一区二 | 欧美日韩中文在线 | 午夜在线 | www.国产视频 | 一级视频免费观看 | 亚洲一区二区三 | 黄色美女网站免费 | 国产一级久久久久 | 91在线观看 | 欧美日韩国产一区二区三区 | 午夜视频网 | 国产色视频在线观看免费 | 热久久国产 | 成人综合激情 | 欧美日韩精品免费 | 色婷婷基地 | 青青操av在线 | 日韩精品中文字幕在线观看 | 成人免费视频网 | 在线观看日韩精品 | 91久久极品| 国产激情偷乱视频一区二区三区 | 精品久久久久久国产 | 欧美亚洲在线 | 亚洲国产一区二区三区精品 | 蜜桃香蕉视频 | 激情欧美日韩一区二区 | 啊啊啊网站 | 色婷婷电影 | 99国产精品99久久久久久 | 北条麻妃99精品青青久久 | 红桃成人少妇网站 | 一区二区三区视频免费在线观看 | 国产精品久久久久久久久久东京 | 午夜电影福利 | 夜久久| 中国久久久 | 精品中文字幕一区二区三区av |