最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot+MyBatis-Flex配置ProxySQL的實(shí)現(xiàn)步驟

 更新時(shí)間:2025年02月14日 09:50:16   作者:成都市-高級(jí)Java開發(fā)-空  
本文主要介紹了SpringBoot+MyBatis-Flex配置ProxySQL的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

?? 目標(biāo)

  • 在 Spring Boot 中連接 ProxySQL。
  • 使用 MyBatis-Flex 訪問數(shù)據(jù)庫。
  • 配置 讀寫分離 和 延遲檢測(cè)。

?? 步驟 1:確保 ProxySQL 和 MySQL 主從同步已正確配置

首先,確保您已經(jīng)正確配置了 ProxySQL 和 MySQL 主從同步。

ProxySQL 的默認(rèn)配置

Hostgroup ID描述
10主庫(寫操作)
20從庫(讀操作)

ProxySQL 的數(shù)據(jù)端口

  • 端口:6033(默認(rèn)數(shù)據(jù)接口端口)

?? 步驟 2:在 Spring Boot 項(xiàng)目中引入依賴

引入 MyBatis-Flex 的依賴

在 pom.xml 中添加以下依賴:

<dependency>
    <groupId>com.mybatisflex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.4.3</version>
</dependency>

?? 步驟 3:配置 application.yml

在 application.yml 文件中配置 ProxySQL 的數(shù)據(jù)源。

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:6033/db_order_plus?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: root
  mybatis-flex:
    mapper-locations: classpath:mapper/**/*Mapper.xml
    configuration:
      map-underscore-to-camel-case: true

?? 步驟 4:配置數(shù)據(jù)源的讀寫分離

在 ProxySQL 中配置 讀寫分離規(guī)則:

在 ProxySQL 管理界面執(zhí)行以下 SQL

INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup)
VALUES (1, 1, '^SELECT.*', 20),
       (2, 1, '^INSERT.*|^UPDATE.*|^DELETE.*', 10);

LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;

?? 步驟 5:創(chuàng)建 MyBatis-Flex 的 Mapper 和實(shí)體類

1、創(chuàng)建實(shí)體類

在 com.example.demo.entity 包中創(chuàng)建一個(gè)實(shí)體類,例如 Order.java

package com.example.demo.entity;

public class Order {
    private Long id;
    private String orderName;

    // Getters and Setters
}

2、創(chuàng)建 Mapper 接口

在 com.example.demo.mapper 包中創(chuàng)建一個(gè) Mapper 接口:

package com.example.demo.mapper;

import com.example.demo.entity.Order;
import org.apache.ibatis.annotations.Select;

public interface OrderMapper {
    
    @Select("SELECT * FROM orders WHERE id = #{id}")
    Order selectOrderById(Long id);
}

3、創(chuàng)建 Mapper XML 文件

在 src/main/resources/mapper 目錄下創(chuàng)建 OrderMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.demo.mapper.OrderMapper">
    <select id="selectOrderById" resultType="com.example.demo.entity.Order">
        SELECT * FROM orders WHERE id = #{id}
    </select>
</mapper>

?? 步驟 6:創(chuàng)建 Service 和 Controller

1、 創(chuàng)建 Service

在 com.example.demo.service 包中創(chuàng)建一個(gè) OrderService

package com.example.demo.service;

import com.example.demo.entity.Order;
import com.example.demo.mapper.OrderMapper;
import org.springframework.stereotype.Service;

@Service
public class OrderService {

    private final OrderMapper orderMapper;

    public OrderService(OrderMapper orderMapper) {
        this.orderMapper = orderMapper;
    }

    public Order getOrderById(Long id) {
        return orderMapper.selectOrderById(id);
    }
}

2、創(chuàng)建 Controller

在 com.example.demo.controller 包中創(chuàng)建一個(gè) OrderController

package com.example.demo.controller;

import com.example.demo.entity.Order;
import com.example.demo.service.OrderService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController {

    private final OrderService orderService;

    public OrderController(OrderService orderService) {
        this.orderService = orderService;
    }

    @GetMapping("/orders/{id}")
    public Order getOrderById(@PathVariable Long id) {
        return orderService.getOrderById(id);
    }
}

?? 步驟 7:測(cè)試讀寫分離

  • 啟動(dòng) Spring Boot 項(xiàng)目:
mvn spring-boot:run
  • 測(cè)試寫操作(INSERT/UPDATE/DELETE)

通過 Navicat 或其他工具,向數(shù)據(jù)庫執(zhí)行寫操作,確保這些操作路由到 主庫。

  • 測(cè)試讀操作(SELECT)

訪問 http://localhost:8080/orders/{id},驗(yàn)證讀操作是否路由到 從庫。

?? 步驟 8:配置延遲檢測(cè)

在 ProxySQL 中啟用 延遲檢測(cè):

SET mysql-monitor_replication_lag_interval_ms = 1000;

INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup, check_type, max_replication_lag)
VALUES (10, 20, 'seconds_behind_master', 5);

LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

? 總結(jié)

步驟描述
安裝 MyBatis-Flex在項(xiàng)目中引入 MyBatis-Flex
配置數(shù)據(jù)源在 application.yml 中配置 ProxySQL 的數(shù)據(jù)源
配置讀寫分離規(guī)則在 ProxySQL 中配置讀寫分離規(guī)則
創(chuàng)建實(shí)體類、Mapper、Service、Controller實(shí)現(xiàn)數(shù)據(jù)庫訪問邏輯
啟用延遲檢測(cè)在 ProxySQL 中啟用延遲檢測(cè)

到此這篇關(guān)于SpringBoot+MyBatis-Flex配置ProxySQL的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)SpringBoot MyBatis-Flex配置ProxySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

太和县| 祁连县| 洪洞县| 莆田市| 濮阳县| 留坝县| 洮南市| 车险| 禹城市| 德格县| 聊城市| 长宁区| 邢台县| 攀枝花市| 安顺市| 泰安市| 筠连县| 连城县| 三江| 北京市| 汝州市| 峡江县| 郓城县| 拉萨市| 定远县| 南部县| 平武县| 长子县| 长岛县| 班戈县| 海淀区| 温州市| 新平| 上杭县| 辰溪县| 葫芦岛市| 米林县| 简阳市| 镇原县| 托里县| 电白县|