您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么通過一個注解實現MyBatis字段加解密”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么通過一個注解實現MyBatis字段加解密”吧!
mybatis-crypto 是一個基于 mybatis 插件機制實現的字段加解密組件,通過一個注解即可對敏感數據進行加解密處理。 支持自定義 Encryptor、特殊字段單獨指定 Encryptor 和 key ,滿足大部分使用場景。
mybatis-crypto 包括三個模塊:
mybatis-crypto-core 插件的核心功能模塊
mybatis-crypto-spring-boot-starter 提供了 Spring boot 快速整合功能
mybatis-crypto-encryptors 提供了一些 IEncryptor 實現
引入依賴
<dependency> <groupId>io.github.whitedg</groupId> <artifactId>mybatis-crypto-spring-boot-starter</artifactId> <version>${latest.version}</version> </dependency>
實現 IEncryptor
import io.github.whitedg.mybatis.crypto.IEncryptor; public class MyEncryptor implements IEncryptor { @Override public String encrypt(Object val2bEncrypted, String key) throws Exception { // 實現這個方法返回加密后的數據 return "encrypted string"; } @Override public String decrypt(Object val2bDecrypted, String key) throws Exception { // 實現這個方法返回解密后的數據 return "decrypted string"; } }
或者引入 mybatis-crypto-encryptors
<dependency> <groupId>io.github.whitedg</groupId> <artifactId>mybatis-crypto-encryptors</artifactId> <version>${latest.version}</version> </dependency>
使用其提供的 Encryptor:
io.github.whitedg.mybatis.crypto.Base64Encryptor
io.github.whitedg.mybatis.crypto.BasicTextEncryptor
io.github.whitedg.mybatis.crypto.AES256Encryptor
io.github.whitedg.mybatis.crypto.StrongTextEncryptor
添加配置
mybatis-crypto: # 是否啟用插件,默認 true enabled: true # 快速失敗,默認 true fail-fast: false # 全局默認 Encryptor default-encryptor: io.github.whitedg.mybatis.crypto.BasicTextEncryptor # Encryptor 默認密鑰 default-key: global-key # mybatis @Param 注解下需要加解密的參數 key 前綴 mapped-key-prefixes: et,encrypted
指定加密字段
在需要加解密的字段上添加注解 @EncryptedField
public class User { @EncryptedField private String encryptedStr; @EncryptedField(encryptor = YourEncryptor.class, key = "Your Key") private String customizedStr; }
使用配置的 @Param 參數 key 前綴
import org.apache.ibatis.annotations.Param; interface YourEntityMapper { int insert(@Param("et") YourEntity entity); // 支持數組 int batchInsert(@Param("encrypted-entities") List<YourEntity> entity); // 返回值也支持單個對象或數組 YourEntity selectOne(); List<YourEntity> selectList(); }
Demo
配置項 | 說明 | 默認值 |
---|---|---|
mybatis-crypto.enabled | 是否啟用 mybatis-crypto | true |
mybatis-crypto.fail-fast | 快速失敗,加解密過程中發生異常是否中斷。true:拋出異常,false:使用原始值,打印 warn 級別日志 | true |
mybatis-crypto.mapped-key-prefixes | @Param 參數名的前綴,前綴匹配則會進行加密處理 | 空 |
mybatis-crypto.default-encryptor | 全局默認 Encryptor | 空 |
mybatis-crypto.default-key | 全局默認 Encryptor 的密鑰 | 空 |
感謝各位的閱讀,以上就是“怎么通過一個注解實現MyBatis字段加解密”的內容了,經過本文的學習后,相信大家對怎么通過一個注解實現MyBatis字段加解密這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。