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

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

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

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

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

添加依賴(lài)

<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:查詢(xún)輔助列

配置文件

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)一般都會(huì)吧這個(gè)邏輯列和實(shí)際物理列名一致)
          plainColumn: pwd  #實(shí)際物理列名
          cipherColumn: pwd_cipher #加密后的列名
          encryptorName: pwd_encryptor  #加密列使用的加密算法(對(duì)應(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í)行時(shí)打印SQL
props:
  sql-show: true    

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

CRUD操作

實(shí)體對(duì)象

#數(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)一般都會(huì)吧這個(gè)邏輯列和實(shí)際物理列名一致)
          plainColumn: pwd  #實(shí)際物理列名
          cipherColumn: pwd_cipher #加密后的列名
          encryptorName: pwd_encryptor  #加密列使用的加密算法(對(duì)應(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í)行時(shí)打印SQL
props:
  sql-show: true    

Mapper類(lèi)

 
public interface UsersMapper extends BaseMapper<Users> {
}

測(cè)試類(lèi)

 
@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) ;
  }
}

測(cè)試結(jié)果

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

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

在config.yaml文件中我們配置了連接池信息,但是實(shí)際沒(méi)有生效。如上配置的最小連接數(shù)是10,最大是200,但是實(shí)際打印都成了默認(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

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

輔助查詢(xún)列

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

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

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

使用的是輔助列查詢(xún)。

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

相關(guān)文章

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

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

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

    SpringBoot使用@EnableAutoConfiguration實(shí)現(xiàn)自動(dòng)配置詳解

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

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

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

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

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

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

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

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

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

    JVM的類(lèi)加載過(guò)程以及雙親委派模型詳解

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

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

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

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

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

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

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

最新評(píng)論

延庆县| 宣威市| 图木舒克市| 疏附县| 宁化县| 土默特右旗| 绥江县| 札达县| 邛崃市| 中山市| 虎林市| 阿拉善右旗| 电白县| 信丰县| 会理县| 惠州市| 什邡市| 贺兰县| 台州市| 大竹县| 宝清县| 湖北省| 高平市| 宣恩县| 县级市| 新建县| 阿图什市| 虞城县| 绵竹市| 襄城县| 措勤县| 长白| 岱山县| 霞浦县| 永年县| 高淳县| 淳安县| 额尔古纳市| 阳新县| 神农架林区| 和龙市|