这篇文章主要讲解了“怎么通过一个注解实现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

importio.github.whitedg.mybatis.crypto.IEncryptor;publicclassMyEncryptorimplementsIEncryptor{@OverridepublicStringencrypt(Objectval2bEncrypted,Stringkey)throwsException{//实现这个方法返回加密后的数据return"encryptedstring";}@OverridepublicStringdecrypt(Objectval2bDecrypted,Stringkey)throwsException{//实现这个方法返回解密后的数据return"decryptedstring";}}

或者引入 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:#是否启用插件,默认trueenabled:true#快速失败,默认truefail-fast:false#全局默认Encryptordefault-encryptor:io.github.whitedg.mybatis.crypto.BasicTextEncryptor#Encryptor默认密钥default-key:global-key#mybatis@Param注解下需要加解密的参数key前缀mapped-key-prefixes:et,encrypted

指定加密字段

在需要加解密的字段上添加注解 @EncryptedField

publicclassUser{@EncryptedFieldprivateStringencryptedStr;@EncryptedField(encryptor=YourEncryptor.class,key="YourKey")privateStringcustomizedStr;}

使用配置的 @Param 参数 key 前缀

importorg.apache.ibatis.annotations.Param;interfaceYourEntityMapper{intinsert(@Param("et")YourEntityentity);//支持数组intbatchInsert(@Param("encrypted-entities")List<YourEntity>entity);//返回值也支持单个对象或数组YourEntityselectOne();List<YourEntity>selectList();}

Demo

配置项说明配置项说明默认值mybatis-crypto.enabled是否启用 mybatis-cryptotruemybatis-crypto.fail-fast快速失败,加解密过程中发生异常是否中断。true:抛出异常,false:使用原始值,打印 warn 级别日志truemybatis-crypto.mapped-key-prefixes@Param 参数名的前缀,前缀匹配则会进行加密处理空mybatis-crypto.default-encryptor全局默认 Encryptor空mybatis-crypto.default-key全局默认 Encryptor 的密钥空

感谢各位的阅读,以上就是“怎么通过一个注解实现MyBatis字段加解密”的内容了,经过本文的学习后,相信大家对怎么通过一个注解实现MyBatis字段加解密这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!