Mybatis-plus多數據源 + 數據庫連接明文加密


核心依賴

        <!--mybatis-plus 核心組件-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
        <!--mybatis-plus多數據源開發-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--mysql驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
</project>

數據庫連接明文加密

1.生成秘鑰
2.生成密文
3.密文填寫配置文件

 @Test
    public void testJiaMi(){
	//生成秘鑰
        String randomKey = AES.generateRandomKey();
        String data2 = "jdbc:mysql://localhost:3306/study03?useSSL=false&serverTimezone=UTC";
        // 隨機密鑰加密
        String result = AES.encrypt(data2, randomKey);
        System.out.println(randomKey+"||"+result);
    }

秘鑰 在啟動參數 (Program arguments) --mpw.key=4b57e89bac82a797

類似如下填寫

  datasource:
   driver-class-name: com.mysql.jdbc.Driver
   url:mpw:dNjT0C8R2vh972whSGklO69WmcQZH494voJk38q/JmdnswjmjMJpyyQvGii+YmLe
   username: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
   password: mpw:3IAJ/lzGvlG5+CSXhe2S2g==

多數據源配置

server:
  port: 8082
spring:
  profiles:
    active: prod
  datasource: #使用了mybatis-plus的加密,密匙傳遞在啟動參數
    #mybatis-plus多數據源框架
    dynamic:
      primary: master #設置默認的數據源或者數據源組,默認值即為master
      strict: false #嚴格匹配數據源,默認false. true未匹配到指定數據源時拋異常,false使用默認數據源
      datasource:
        master:
          driver-class-name: com.mysql.jdbc.Driver
          url: mpw:dNjT0C8R2vh972whSGklO69WmcQZH494voJk38q/Jmfr7P7L5i6A9aReXemBPXCB6125DwN+5EYRTy/oNOA4AXe2/1XDMnOuQPXNVCJ2C4k=
          username: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
          password: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
        slave_1:
          url: mpw:dNjT0C8R2vh972whSGklOyqz7hR9ntRUU58MOiSftOelxMKOCB2rquB+qAZ5KF8IJAV7bVvXjNKSt6qpsnKaV6nz6jV0A27NhwchZZroWgQ=
          username: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
          password: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
          driver-class-name: com.mysql.jdbc.Driver
        slave_2:
          url: mpw:dNjT0C8R2vh972whSGklO69WmcQZH494voJk38q/JmfDVhJi8IkUYln5KNoyZqSOKZXC0FiZKBGg46AYzRk1lRv6ZdJdSRi/hSoxPoph5VI=
          username: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
          password: mpw:3IAJ/lzGvlG5+CSXhe2S2g==
          driver-class-name: com.mysql.jdbc.Driver
mybatis-plus:
  type-aliases-package: com.example.entity  #實體類別名
  mapper-locations: classpath:mapper/*.xml   # 掃描的xml
  configuration:
    map-underscore-to-camel-case: true  #開啟駝峰命名
    cache-enabled: false
  check-config-location: true # 檢查xml是否存在
  type-enums-package: com.example.enumpackage  #通用枚舉開啟

使用切換數據源

package com.example.controller;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * @description: mybatisPlus多數據源
 * @author: GuoTong
 * @createTime: 2021-08-21 22:53
 * @since JDK 1.8 OR 11
 **/
@RestController
public class MoreDataSource {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping("/datasource01")
    @DS("master")
    public Object datasource01() {
        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from user");
        return list;
    }

    @RequestMapping("/datasource02")
    @DS("slave_1")
    public Object datasource02() {
        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from user");
        return list;
    }

    @RequestMapping("/datasource03")
    @DS("slave_2")
    public Object datasource03() {
        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from user");
        return list;
    }
}

效果

http://localhost:8082/datasource01
image

http://localhost:8082/datasource02
image
http://localhost:8082/datasource03
image

結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM