1. 程式人生 > >springboot2.x 整合mybatis-plus sharding-jdbc實現讀寫分離

springboot2.x 整合mybatis-plus sharding-jdbc實現讀寫分離

首先,匯入依賴,下面只展示核心依賴

     <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0-beta</version>
        </dependency>
        <dependency>
            <groupId>
io.shardingjdbc</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>2.0.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId
>
<version>5.1.40</version> </dependency>

接下來是我們的配置

首先是MybatisPlusConfig的配置,主要是配置了幾個外掛,可以按照個人需求配置
@Configuration
public class MybatisPlusConfig {
    /**
     * 分頁外掛
     *
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor
() { return new PaginationInterceptor(); } /** * 效能分析外掛 * * @return */ @Bean public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); performanceInterceptor.setFormat(true); return performanceInterceptor; } /** * 樂觀鎖外掛 * * @return */ @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } }

接下來是sharding-jdbc的配置,需要配置dataSource和主從規則

@Configuration
@EnableConfigurationProperties(ShardingMasterSlaveConfig.class)
@Log4j2
@ConditionalOnProperty({"sharding.jdbc.data-sources.ds_master.jdbc-url", "sharding.jdbc.master-slave-rule.master-data-source-name"})
public class ShardingDataSourceConfig {

    @Autowired
    private ShardingMasterSlaveConfig shardingMasterSlaveConfig;

    @Bean
    public DataSource masterSlaveDataSource() throws SQLException {
        Map<String, DataSource> dataSourceMap = Maps.newHashMap();
        dataSourceMap.putAll(shardingMasterSlaveConfig.getDataSources());
        DataSource dataSource = MasterSlaveDataSourceFactory.createDataSource(dataSourceMap, shardingMasterSlaveConfig.getMasterSlaveRule(), Maps.newHashMap());
        log.info("masterSlaveDataSource config complete");
        return dataSource;
    }

}
**********************************************************************************************
@Data
@ConfigurationProperties(prefix = "sharding.jdbc")
public class ShardingMasterSlaveConfig {

    private Map<String, HikariDataSource> dataSources = new HashMap<>();

    private MasterSlaveRuleConfiguration masterSlaveRule;
}

然後是,mapper 和xml,這裡就不寫了(這裡我測試專案中至少需要一個mapper和xml,否則會報空指標異常)。然後controller測試

@RestController
@Log4j2
public class UserController {

    @PostMapping("user")
    public String saveUser(@RequestBody User user) {
        log.info(user);
        user.insert();
        return "插入完畢";
    }
}

下面是測試截圖
這裡寫圖片描述

完整專案地址(點我跳轉

相關推薦

springboot2.x 整合mybatis-plus sharding-jdbc實現分離

首先,匯入依賴,下面只展示核心依賴 <dependency> <groupId>com.baomidou</groupId> <artifactId>my

sharding-JDBC 實現分離

aso engine lec bus manage 均衡 map 如果 use 需求 一主兩從,做讀寫分離。 多個從庫之間實現負載均衡。 可手動強制部分讀請求到主庫上。(因為主從同步有延遲,對實時性要求高的系統,可以將部分讀請求也走主庫) 本次不討論 MySQL如何配置

Spring Boot + Mybatis 多資料來源配置實現分離

本文來自網易雲社群作者:王超應用場景:專案中有一些報表統計與查詢功能,對資料實時性要求不高,因此考慮對報表的統計與查詢去操作slave db,減少對master的壓力。根據網上多份資料測試發現總是使用master資料來源,無法切換到slave,經過多次除錯修改現已完美通過,現

mysql jdbc 實現分離

這種方式直接在程式碼級別實現了mysql 讀寫分離 很簡單,只需要改一下配置檔案,就搞定了,是不是很嗨? jdbc.driverClassName=com.mysql.jdbc.ReplicationDriver jdbc.url=jdbc:mysql

shareding-jdbc實現分離最簡單的容易理解示例

資料庫建立create database demo_ds_master; //建立主庫create database demo_ds_slave_0; //建立從庫1create database

SpringBoot2.x整合MyBatis

SpringBoot Mybatis MySQL 集成 Spring 首先在IDEA中創建一個SpringBoot工程: 選擇一些基本的包: 完成創建: 工程創建成功後,補充pom.xml文件中的依賴,完整的依賴如下: <dependencies> &l

springboot + mybatis + mysql + sharding-jdbc 實現分庫分表

配置檔案 mybatis.config-locations=classpath:mybatis/mybatis-config.

SpringBoot2.0.3+Mybatis+Mysql+druid實現分離+事務

       mysql支援一主多從,即在寫庫的資料庫發生變動時,會同步到所有從庫,只是同步過程中,會有一定的延遲(除非業務中出現,立即寫立即讀,否則稍微的延遲是可以接收的)。        當資料庫有主從之分了,那應用程式碼也應該讀寫分離了。這時候的事務就不像單個數據

使用Spring+MySql實現分離(二)spring整合多數據庫

ont 依據 xml配置 實現 整合 配置 item 匹配 mic 緊接著上一章,因為現在做的項目還是以spring為主要的容器管理框架,所以寫以下spring如何整合多個數據源。 1. 背景 我們一般應用對數據庫而言都是“讀多寫少”,也就說對數據庫讀取數據的壓力比較大

Spring+SpringMVC+MyBatis+MySQL 實現分離

簡介 主從複製實現後,主庫資料只能夠寫入資料,讀資料只能夠從庫資料完成。此時程式碼部分就需要實現讀寫分離;就需要配置多個數據源;而以前配置的DataSource 只能夠從單一的URL中獲取連線。在Spring 中提供了一個AbstractRoutingDataSource 類來

SSM整合系列之 配置多資料來源並實現手動切換資料來源可實現分離

摘要:在之前的開發中有很多場景用到了多資料來源的情況,如在做資料冷熱遷移的時候,將冷資料遷移到另一個庫,查詢冷資料時需要切換資料庫;在和天貓京東等電商對接時,因為有多套系統在同時使用,在客戶授權時,需要根據客戶使用的版本,儲存到對應的資料庫中。基於此,在這裡呢簡單實現一個SSM系統的多資

SSM整合系列之 配置多資料來源 利用AOP動態切換資料來源 實現分離

摘要:在開發的專案中大都都會使用讀寫分離的技術,本人目前開發的專案接觸到的都是主從複製(一主一從),就是一個Master資料庫,一個Slave資料庫。主庫負責資料插入、更新和實時資料查詢,從庫庫負責非實時資料查詢。在實際專案應用中,都是讀多寫少,而讀取資料通常比較複雜而且耗時,SQL語句

Spring+Mybatis透明實現分離

背景 網上有好多讀寫分離的實踐,所應對的業務場景也不一樣,本方法參考了網上好多方法,最終實現為快速應對中小型網際網路產品的讀寫分離。 資料庫環境: 1臺master;多臺slaver 適用框架: spring+mybatis 操作資料庫的簡單原理

springboot實現分離(基於Mybatis,mysql)

近日工作任務較輕,有空學習學習技術,遂來研究如果實現讀寫分離。這裡用部落格記錄下過程,一方面可備日後檢視,同時也能分享給大家(網上的資料真的大都是抄來抄去,,還不帶格式的,看的真心難受)。 完整程式碼:https://github.com/FleyX/demo-project/tree/master/dxfl

SpringBoot 整合 MyCat 實現分離

MyCat一個徹底開源的,面向企業應用開發的大資料庫叢集。基於阿里開源的Cobar產品而研發。能滿足資料庫資料大量儲存;提高了查詢效能。文章介紹如何實現MyCat連線MySQL實現主從分離,並整合SpringBoot實現讀寫分離。 MySQL配置主從關係 說明 192.168.0.105 Linux 資料庫

mysql+mysql_proxy實現分離

mysql-_proxymysql讀寫分離需要基於主從架構實現 mysql主從配置:http://hongchen99.blog.51cto.com/12534281/1917137 mysql-proxy:用於實現mysql主從分離,基於主從架構讀寫分離存在的最大問題就是主從同步延遲 安裝my

使用spring實現分離

item ger [] 依據 sign batis repl arch 定義 1. 背景 我們一般應用對數據庫而言都是“讀多寫少”,也就說對數據庫讀取數據的壓力比較大,有一個思路就是說采用數據庫集群的方案, 其中一個是主庫,負責寫入數據,我們稱之為:寫庫; 其它都是從庫,

Spring動態數據源實現分離

character count 方法 cdata mas ebe aso nds evict 一、創建基於ThreadLocal的動態數據源容器,保證數據源的線程安全性 package com.bounter.mybatis.extension; /** * 基

Mysql主從配置,實現分離

windows安裝 建議 xid 分布式 唯一標識 -1 在線下載 命令 進行 大型網站為了軟解大量的並發訪問,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一臺服務器扛,如此多的數據庫連接操作,數據庫必然會崩潰,

Mycat實現分離(一)

mycatMycat介紹Mycat是一個國產中間件產品,作用在應用層和數據庫之間架橋,使應用通過MyCat來對後端數據庫進行管理,是一款國人自主的開源的中間件產品。算是比較優秀的一款,前身是阿裏公司在維護,很多公司也慢慢的在嘗試接入這個產品,但不得不說官方文檔似乎做的不太友好。至於為什麽選擇MyCat可能只有