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

SpringBoot整合ShardingSphere5.x實現(xiàn)數(shù)據(jù)加解密功能(最新推薦)

 更新時間:2023年06月09日 09:55:52   作者:asoklove  
這篇文章主要介紹了SpringBoot整合ShardingSphere5.x實現(xiàn)數(shù)據(jù)加解密功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

環(huán)境:Springboot2.6.14 + ShardingSphere5.3.0

準(zhǔn)備環(huán)境

添加依賴

<dependency>
  <groupId>org.apache.shardingsphere</groupId>
  <artifactId>shardingsphere-jdbc-core</artifactId>
  <version>${shardingsphere.version}</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>${mybatis-plus.version}</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>${mybatis-plus.version}</version>
</dependency>

數(shù)據(jù)表users

pwd:明文字段

pwd_clipher:密文字段

assisted_query_pwd:查詢輔助列

配置文件

application.yml配置文件(Springboot)

spring:
  datasource:
    driverClassName: org.apache.shardingsphere.driver.ShardingSphereDriver    
    url: jdbc:shardingsphere:classpath:config.yaml
    name: EncryptHikariCP
---
mybatis-plus:
  configuration:
    mapUnderscoreToCamelCase: true
  mapperLocations: classpath*:/mapper/**/*.xml
  typeAliasesPackage: com.pack

config.yaml配置文件(ShardingSphere)

#數(shù)據(jù)源配置
dataSources:
  ds1:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:3306/testjpa?serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: 123123
    minimumIdle: 10
    maximumPoolSize: 200
    autoCommit: true
    idleTimeout: 30000
    poolName: MasterHikariCP
    maxLifetime: 1800000
    connectionTimeout: 30000
    connectionTestQuery: SELECT 1
#規(guī)則配置
rules:
- !ENCRYPT #加解密相關(guān)配置
  tables:
    users:
      columns:
        pwd:  #邏輯列(如果是老系統(tǒng)一般都會吧這個邏輯列和實際物理列名一致)
          plainColumn: pwd  #實際物理列名
          cipherColumn: pwd_cipher #加密后的列名
          encryptorName: pwd_encryptor  #加密列使用的加密算法(對應(yīng)下面的配置)
          #assistedQueryColumn: assisted_query_pwd
          #assistedQueryEncryptorName: assisted_encryptor
      queryWithCipherColumn: true
  encryptors:
    pwd_encryptor:
      type: SM4
      props:
        sm4-key: aaaabbbbccccdddd1111222233334444
        sm4-mode: ECB
        sm4-iv: aabbccddeeffgghh
        sm4-padding: PKCS7Padding
    assisted_encryptor:
      type: SM3
      props:
        sm3-salt: aaaabbbb
#執(zhí)行時打印SQL
props:
  sql-show: true    

有了上面配置后,接下來就可以進(jìn)行相應(yīng)的CRUD操作了。

CRUD操作

實體對象

#數(shù)據(jù)源配置
dataSources:
  ds1:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:3306/testjpa?serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: 123123
    minimumIdle: 10
    maximumPoolSize: 200
    autoCommit: true
    idleTimeout: 30000
    poolName: MasterHikariCP
    maxLifetime: 1800000
    connectionTimeout: 30000
    connectionTestQuery: SELECT 1
#規(guī)則配置
rules:
- !ENCRYPT #加解密相關(guān)配置
  tables:
    users:
      columns:
        pwd:  #邏輯列(如果是老系統(tǒng)一般都會吧這個邏輯列和實際物理列名一致)
          plainColumn: pwd  #實際物理列名
          cipherColumn: pwd_cipher #加密后的列名
          encryptorName: pwd_encryptor  #加密列使用的加密算法(對應(yīng)下面的配置)
          #assistedQueryColumn: assisted_query_pwd
          #assistedQueryEncryptorName: assisted_encryptor
      queryWithCipherColumn: true
  encryptors:
    pwd_encryptor:
      type: SM4
      props:
        sm4-key: aaaabbbbccccdddd1111222233334444
        sm4-mode: ECB
        sm4-iv: aabbccddeeffgghh
        sm4-padding: PKCS7Padding
    assisted_encryptor:
      type: SM3
      props:
        sm3-salt: aaaabbbb
#執(zhí)行時打印SQL
props:
  sql-show: true    

Mapper類

 
public interface UsersMapper extends BaseMapper<Users> {
}

測試類

 
@SpringBootTest
public class UserMapperTest {
  @Resource
  private UsersMapper usersMapper ;
  @Resource
  private IUsersService us ;
  @Resource
  private List<DataSource> dataSources ;
  @Test
  public void testUserList() {
    QueryWrapper<Users> queryWrapper = new QueryWrapper<>() ;
    queryWrapper.eq("pwd", "999999") ;
    System.out.println(this.usersMapper.selectList(queryWrapper)) ;
  }
  @Test
  public void testSave() {
    Users user = new Users() ;
    user.setAge(99) ;
    user.setEmail("99999@qq.com") ;
    user.setIdNo("999999") ;
    user.setName("久久") ;
    user.setPwd("999999") ;
    this.usersMapper.insert(user) ;
  }
}

測試結(jié)果

數(shù)據(jù)源及查詢輔助列

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

在config.yaml文件中我們配置了連接池信息,但是實際沒有生效。如上配置的最小連接數(shù)是10,最大是200,但是實際打印都成了默認(rèn)值都是10。最后修改連接池配置方式如下:

spring:
  datasource:
    driverClassName: org.apache.shardingsphere.driver.ShardingSphereDriver    
    url: jdbc:shardingsphere:classpath:config.yaml
    name: EncryptHikariCP
    hikari:
      minimumIdle: 10
      maximumPoolSize: 200
      autoCommit: true
      idleTimeout: 30000
      poolName: BaseHikariCP
      maxLifetime: 1800000
      connectionTimeout: 30000
      connectionTestQuery: SELECT 1

如上配置后連接池才正常。

輔助查詢列

輔助查詢列會根據(jù)你的配置是否使用輔助列,當(dāng)沒有配置輔助查詢列時,執(zhí)行SQL如下:

使用的是加密列進(jìn)行查詢了

當(dāng)配置了輔助查詢列后:

使用的是輔助列查詢。

到此這篇關(guān)于SpringBoot整合ShardingSphere5.x實現(xiàn)數(shù)據(jù)加解密功能的文章就介紹到這了,更多相關(guān)SpringBoot整合ShardingSphere5.x內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot多數(shù)據(jù)源配置并通過注解實現(xiàn)動態(tài)切換數(shù)據(jù)源

    SpringBoot多數(shù)據(jù)源配置并通過注解實現(xiàn)動態(tài)切換數(shù)據(jù)源

    本文主要介紹了SpringBoot多數(shù)據(jù)源配置并通過注解實現(xiàn)動態(tài)切換數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot使用@EnableAutoConfiguration實現(xiàn)自動配置詳解

    SpringBoot使用@EnableAutoConfiguration實現(xiàn)自動配置詳解

    你有想過SpringBoot為什么能夠自動的幫我們創(chuàng)建一個Bean對象么?或許在我們使用的時候只需要在自己自定義的配置文件中加入@Bean對象就可以,但SpringBoot是如何來創(chuàng)建的呢
    2022-08-08
  • Spring?Boot?3.x?GraalVM原生鏡像構(gòu)建內(nèi)存溢出問題解決方案

    Spring?Boot?3.x?GraalVM原生鏡像構(gòu)建內(nèi)存溢出問題解決方案

    文章解析了Spring?Boot?3.x與GraalVM?Native?Image構(gòu)建過程中出現(xiàn)的內(nèi)存溢出問題,從問題概述、根本原因、診斷工具、解決方案到高級調(diào)優(yōu)技巧和應(yīng)急解決方案,全面覆蓋了構(gòu)建優(yōu)化的各個方面,本文給大家介紹的非常詳細(xì),感興趣的朋友一起學(xué)習(xí)下吧
    2026-01-01
  • Java中JSch與jsch.addIdentity()完全詳細(xì)解析

    Java中JSch與jsch.addIdentity()完全詳細(xì)解析

    JSch是SSH2的一個純Java實現(xiàn),它允許你連接到一個sshd服務(wù)器,使用端口轉(zhuǎn)發(fā),X11轉(zhuǎn)發(fā),文件傳輸?shù)鹊?這篇文章主要介紹了Java中JSch與jsch.addIdentity()完全詳細(xì)解析,需要的朋友可以參考下
    2026-01-01
  • IDEA POJO開發(fā)神器之Groovy的使用詳解

    IDEA POJO開發(fā)神器之Groovy的使用詳解

    這篇文章主要介紹了IDEA POJO開發(fā)神器之Groovy的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解JAVA生成將圖片存入數(shù)據(jù)庫的sql語句實現(xiàn)方法

    詳解JAVA生成將圖片存入數(shù)據(jù)庫的sql語句實現(xiàn)方法

    這篇文章主要介紹了詳解JAVA生成將圖片存入數(shù)據(jù)庫的sql語句實現(xiàn)方法的相關(guān)資料,這里就是實現(xiàn)java生成圖片并存入數(shù)據(jù)庫的實例,需要的朋友可以參考下
    2017-08-08
  • JVM的類加載過程以及雙親委派模型詳解

    JVM的類加載過程以及雙親委派模型詳解

    這篇文章主要介紹了JVM的類加載過程以及雙親委派模型詳解,類加載器就是根據(jù)指定全限定名稱將 class 文件加載到 JVM 內(nèi)存,然后再轉(zhuǎn)化為 class 對象。,需要的朋友可以參考下
    2019-06-06
  • Java中使用注解獲取和改變Bean的指定變量值

    Java中使用注解獲取和改變Bean的指定變量值

    Java有時需要通過自定義注解,獲取某Bean的某變量的值,根據(jù)業(yè)務(wù)要求處理數(shù)據(jù),然后再把新值設(shè)置回Bean的同一變量中,這篇文章介紹了使用注解獲取和改變Bean變量值的過程,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • 教你怎么使用Java實現(xiàn)WebSocket

    教你怎么使用Java實現(xiàn)WebSocket

    這篇文章主要介紹了教你怎么使用Java WebSocket,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 9個小技巧讓你的Java if else看起來更優(yōu)雅

    9個小技巧讓你的Java if else看起來更優(yōu)雅

    這篇文章主要給大家介紹了9個小技巧,通過這幾個小技巧可以讓你的Java if else看起來更優(yōu)雅,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論

石景山区| 美姑县| 太谷县| 绵阳市| 天峻县| 庆城县| 正定县| 波密县| 富宁县| 安龙县| 忻城县| 图片| 邻水| 邵东县| 嘉荫县| 西城区| 青海省| 太白县| 永安市| 西华县| 临猗县| 柯坪县| 宝应县| 泾川县| 古交市| 淮阳县| 丰镇市| 金坛市| 中山市| 西华县| 黑水县| 石城县| 荆州市| 息烽县| 云浮市| 馆陶县| 会东县| 锦屏县| 靖安县| 仙游县| 海伦市|