国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離

這篇具有很好參考價(jià)值的文章主要介紹了Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,微服務(wù)架構(gòu)設(shè)計(jì),Web前端框架,spring boot,mybatis,數(shù)據(jù)庫

??Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒??
  • ?博客主頁:IT·陳寒的博客
  • ??該系列文章專欄:架構(gòu)設(shè)計(jì)
  • ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)
  • ??文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希望大家能指正??
  • ?? 歡迎大家關(guān)注! ??

1. 引言

在當(dāng)今互聯(lián)網(wǎng)應(yīng)用中,數(shù)據(jù)庫讀寫分離是提高系統(tǒng)性能和穩(wěn)定性的重要手段之一。通過將讀操作和寫操作分別路由到不同的數(shù)據(jù)庫節(jié)點(diǎn),可以有效減輕數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),提升系統(tǒng)的整體性能。本文將介紹如何利用Spring Boot和MyBatis-Plus框架實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,并通過簡(jiǎn)單易懂的代碼示例來詳細(xì)說明每個(gè)步驟。
Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,微服務(wù)架構(gòu)設(shè)計(jì),Web前端框架,spring boot,mybatis,數(shù)據(jù)庫

2. MyBatis-Plus簡(jiǎn)介

MyBatis-Plus是MyBatis的增強(qiáng)工具,提供了許多實(shí)用的功能,包括但不限于代碼生成器、通用Mapper、分頁插件等。在本文中,我們將專注于使用MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離。

3. 準(zhǔn)備工作

在開始之前,確保你的開發(fā)環(huán)境中已經(jīng)安裝了以下軟件:

  • JDK(推薦使用JDK 8及以上版本)
  • Maven
  • IntelliJ IDEA或Eclipse(可選)

在項(xiàng)目的pom.xml文件中添加MyBatis-Plus和數(shù)據(jù)庫驅(qū)動(dòng)的依賴:

<!-- MyBatis-Plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.2</version>
</dependency>

<!-- MySQL驅(qū)動(dòng) -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

4. 配置數(shù)據(jù)源

application.properties(或application.yml)中配置主庫和從庫的數(shù)據(jù)源:

# 主庫數(shù)據(jù)源配置
spring.datasource.master.url=jdbc:mysql://localhost:3306/masterdb?useSSL=false&serverTimezone=UTC
spring.datasource.master.username=root
spring.datasource.master.password=root
spring.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver

# 從庫數(shù)據(jù)源配置
spring.datasource.slave.url=jdbc:mysql://localhost:3307/slavedb?useSSL=false&serverTimezone=UTC
spring.datasource.slave.username=root
spring.datasource.slave.password=root
spring.datasource.slave.driver-class-name=com.mysql.cj.jdbc.Driver

5. 配置MyBatis-Plus

創(chuàng)建一個(gè)配置類,用于配置MyBatis-Plus的分頁插件和動(dòng)態(tài)數(shù)據(jù)源:

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.example.demo.mapper", sqlSessionFactoryRef = "sqlSessionFactory")
public class MybatisPlusConfig {

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

    @Bean(name = "transactionManager")
    public PlatformTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

6. 創(chuàng)建實(shí)體類和Mapper接口

創(chuàng)建一個(gè)簡(jiǎn)單的實(shí)體類和對(duì)應(yīng)的Mapper接口:

// User.java
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {

    @TableId
    private Long id;
    private String username;
    private String password;
}
// UserMapper.java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

7. 編寫Service

創(chuàng)建Service層,調(diào)用Mapper接口完成數(shù)據(jù)操作:

// UserService.java
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class UserService extends ServiceImpl<UserMapper, User> {
}

8. 控制器層

編寫Controller層,暴露接口供前端調(diào)用:

// UserController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getById(id);
    }

    @PostMapping
    public boolean createUser(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping
    public boolean updateUser(@RequestBody User user) {
        return userService.updateById(user);
    }

    @DeleteMapping("/{id}")
    public boolean deleteUser(@PathVariable Long id) {
        return userService.removeById(id);
    }
}

9. 測(cè)試

啟動(dòng)Spring Boot應(yīng)用程序,訪問相應(yīng)的接口進(jìn)行測(cè)試。通過日志可以看到,MyBatis-Plus會(huì)在執(zhí)行查詢時(shí)根據(jù)一定的規(guī)則選擇主庫或從庫。

10. 數(shù)據(jù)庫讀寫分離的原理

數(shù)據(jù)庫讀寫分離的實(shí)現(xiàn)原理主要通過在MyBatis-Plus中使用@DataSource注解,根據(jù)不同的操作選擇不同的數(shù)據(jù)源。這里簡(jiǎn)要說明一下原理:

  1. 創(chuàng)建多個(gè)數(shù)據(jù)源: 配置文件中定義了主庫和從庫兩個(gè)數(shù)據(jù)源。

  2. 配置動(dòng)態(tài)數(shù)據(jù)源:MybatisPlusConfig配置類中,使用DynamicDataSource類包裝主庫和從庫的數(shù)據(jù)源,通過@Primary注解標(biāo)識(shí)主庫。

  3. 自定義注解: 創(chuàng)建@DataSource注解,用于標(biāo)識(shí)Mapper方法應(yīng)該使用哪個(gè)數(shù)據(jù)源。

  4. AOP切面: 利用AOP,在Mapper方法執(zhí)行前根據(jù)@DataSource注解的值動(dòng)態(tài)切換數(shù)據(jù)源。

11. 拓展

11.1. 動(dòng)態(tài)數(shù)據(jù)源

切換策略

在實(shí)際應(yīng)用中,動(dòng)態(tài)數(shù)據(jù)源切換的策略可以根據(jù)業(yè)務(wù)需求來定制??梢曰谟脩舻淖x寫操作比例、數(shù)據(jù)庫實(shí)例的性能等因素,靈活調(diào)整數(shù)據(jù)源切換的策略。

11.2. 多數(shù)據(jù)源事務(wù)管理

當(dāng)涉及到跨數(shù)據(jù)源的事務(wù)時(shí),需要謹(jǐn)慎處理??梢酝ㄟ^使用分布式事務(wù)框架(如Seata、TCC事務(wù)等)來保障事務(wù)的一致性。

11.3. 多租戶支持

在一些場(chǎng)景中,需要為不同的租戶提供獨(dú)立的數(shù)據(jù)庫,此時(shí)可以考慮使用多租戶架構(gòu),并根據(jù)租戶信息動(dòng)態(tài)切換數(shù)據(jù)源。

12. 總結(jié)

通過本文的學(xué)習(xí),我們了解了如何利用Spring Boot和MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離。這一策略在提升系統(tǒng)性能和穩(wěn)定性方面有著顯著的效果。通過合理配置數(shù)據(jù)源、使用MyBatis-Plus框架以及編寫自定義注解和AOP切面,我們成功地搭建了一個(gè)簡(jiǎn)單而完整的讀寫分離系統(tǒng)。

希望這篇文章對(duì)你理解Spring Boot和MyBatis-Plus的讀寫分離實(shí)現(xiàn)提供了幫助。在實(shí)際項(xiàng)目中,可以根據(jù)具體的業(yè)務(wù)需求和性能要求調(diào)整和拓展這一方案。


??結(jié)尾 ?? 感謝您的支持和鼓勵(lì)! ????
??您可能感興趣的內(nèi)容:

  • 【Java面試技巧】Java面試八股文 - 掌握面試必備知識(shí)(目錄篇)
  • 【Java學(xué)習(xí)路線】2023年完整版Java學(xué)習(xí)路線圖
  • 【AIGC人工智能】Chat GPT是什么,初學(xué)者怎么使用Chat GPT,需要注意些什么
  • 【Java實(shí)戰(zhàn)項(xiàng)目】SpringBoot+SSM實(shí)戰(zhàn):打造高效便捷的企業(yè)級(jí)Java外賣訂購系統(tǒng)
  • 【數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)】從零起步:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的完整路徑

Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,微服務(wù)架構(gòu)設(shè)計(jì),Web前端框架,spring boot,mybatis,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-755492.html

到了這里,關(guān)于Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • spring boot集成mybatis-plus——Mybatis Plus 新增數(shù)據(jù)并返回主鍵 ID(圖文講解)

    spring boot集成mybatis-plus——Mybatis Plus 新增數(shù)據(jù)并返回主鍵 ID(圖文講解)

    ?更新時(shí)間 2023-01-10 15:37:37 大家好,我是小哈。 本小節(jié)中,我們將學(xué)習(xí)如何通過 Mybatis Plus 框架給數(shù)據(jù)庫表新增數(shù)據(jù),主要內(nèi)容思維導(dǎo)圖如下: Mybatis Plus 新增數(shù)據(jù)思維導(dǎo)圖 為了演示新增數(shù)據(jù),在前面小節(jié)中,我們已經(jīng)定義好了一個(gè)用于測(cè)試的用戶表, 執(zhí)行腳本如下: 定義一

    2024年02月02日
    瀏覽(40)
  • Spring Boot入門(14):使用Mybatis-Plus輕松實(shí)現(xiàn)高效自定義SQL操作!

    ? ? ? ? 在上幾期,我們既講了如何整合Mybatis-Plus進(jìn)行數(shù)據(jù)庫的增刪改查,也講解了如何使用MP的 Wrapper 構(gòu)造器,但若是遇到復(fù)雜業(yè)務(wù)邏輯,如多表聯(lián)查、動(dòng)態(tài)拼接條件等,這些操作往往會(huì)讓代碼變得冗長(zhǎng)且難以維護(hù)。但是,有了Mybatis-Plus這個(gè)優(yōu)秀的框架,我們可以輕松實(shí)現(xiàn)

    2024年02月10日
    瀏覽(24)
  • 微服務(wù) Spring Boot Mybatis-Plus 整合 EasyPOI 實(shí)現(xiàn) Excel 一對(duì)多 導(dǎo)入

    微服務(wù) Spring Boot Mybatis-Plus 整合 EasyPOI 實(shí)現(xiàn) Excel 一對(duì)多 導(dǎo)入

    Excel導(dǎo)入 是 開發(fā)中 很常用的 功能 ,本篇 講解 如何使用 Spring Boot + MyBatis -Plus 整合 EasyPOI 實(shí)現(xiàn)Excel 的一對(duì)多導(dǎo)入。 EasyPOI官網(wǎng) 采用 微服務(wù) Spring Boot、Mybatis-Plus 整合 EasyPOI 實(shí)現(xiàn)Excel的一對(duì)多導(dǎo)入 Excel 導(dǎo)入 實(shí)現(xiàn)詳細(xì)細(xì)節(jié) 前端采用 Vue+ElementUI 實(shí)現(xiàn)導(dǎo)入頁面展示,要求 彈出上傳框

    2024年02月03日
    瀏覽(27)
  • Spring Boot整合MyBatis-Plus

    Spring Boot整合MyBatis-Plus

    引言 在現(xiàn)代軟件開發(fā)中,我們經(jīng)常需要處理大量的數(shù)據(jù)。為了有效地管理這些數(shù)據(jù),我們需要使用一些強(qiáng)大的框架。其中,Spring Boot和MyBatis-Plus是兩個(gè)非常流行的框架。Spring Boot是一個(gè)基于Spring的開源Java框架,可以用于創(chuàng)建獨(dú)立的、生產(chǎn)級(jí)別的Spring應(yīng)用。MyBatis-Plus是一個(gè)MyB

    2024年01月19日
    瀏覽(31)
  • Spring Boot 整合MyBatis-Plus

    Spring Boot 整合MyBatis-Plus

    ??前言 本篇博文是關(guān)于Spring Boot 整合MyBatis-Plus的,希望你能夠喜歡?? ??個(gè)人主頁:晨犀主頁 ??個(gè)人簡(jiǎn)介:大家好,我是晨犀,希望我的文章可以幫助到大家,您的滿意是我的動(dòng)力???? ??歡迎大家:這里是CSDN,我總結(jié)知識(shí)的地方,歡迎來到我的博客,感謝大家的觀看??

    2024年02月11日
    瀏覽(31)
  • spring boot mybatis-plus操作實(shí)踐

    1、先建一個(gè)數(shù)據(jù)表實(shí)體類 2、service目錄下新建接口IDeptService,然后擴(kuò)展mp的IService 3、service目錄的impl目錄下新建類 DeptServiceImpl,擴(kuò)展mp的ServiceImpl,實(shí)現(xiàn)接口IDeptService,然后注冊(cè)@Service 注解 4、DeptMapper 接口需要擴(kuò)展mp的BaseMapper接口 5、調(diào)試一下看看是否可以使用

    2024年02月01日
    瀏覽(24)
  • spring boot3整合mybatis-plus

    spring boot3整合mybatis-plus

    添加依賴 配置屬性信息 編寫業(yè)務(wù)邏輯測(cè)試代碼 配置mybatis-plus分頁插件 配置mybatis-plus之屬性自動(dòng)填充 如圖所示 1、添加依賴 2、配置屬性 3、編寫測(cè)試代碼 4、XML文件 5、測(cè)試數(shù)據(jù)是否能走通

    2024年03月12日
    瀏覽(24)
  • spring boot+mybatis-plus配置讀寫分離

    對(duì)于mysql主從機(jī)制的讀寫分離,對(duì)于寫操作寫入主庫,讀取操作讀取從庫 一、安裝依賴 二、配置文件配置數(shù)據(jù)源 三、在service,如果是讀取操作的話,則需要加上注解@DS(“slave”)即可,可看如下示例

    2024年01月25日
    瀏覽(21)
  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(三)自定義SQL、分頁實(shí)現(xiàn)(PaginationInterceptor )、更新和刪除詳細(xì)方法

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! 自定義mapper文件是為了應(yīng)對(duì)一些更復(fù)雜的查詢場(chǎng)景,首先先配置映射路徑 由于這里的mapper文件放在java文件夾中,所以要在pom.xml里進(jìn)行配置 mapper 測(cè)試 在MyBatis Plus中, 物理分頁 和 內(nèi)

    2024年02月03日
    瀏覽(25)
  • 從零開始學(xué)Spring Boot系列-集成MyBatis-Plus

    從零開始學(xué)Spring Boot系列-集成MyBatis-Plus

    在Spring Boot應(yīng)用開發(fā)中,MyBatis-Plus是一個(gè)強(qiáng)大且易于使用的MyBatis增強(qiáng)工具,它提供了很多實(shí)用的功能,如代碼生成器、條件構(gòu)造器、分頁插件等,極大地簡(jiǎn)化了MyBatis的使用和配置。本篇文章將指導(dǎo)大家如何在Spring Boot項(xiàng)目中集成MyBatis-Plus。 首先,確保你已經(jīng)安裝了Java開發(fā)環(huán)

    2024年04月08日
    瀏覽(74)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包