MybatisPlus优雅实现加密?

前言

最近在搞个安全需求,需要对敏感字段做加密存储。于是,,于是我就躺了个坑。

方案梳理

方案一:基于Mybatis的拦截器Interceptor

我的第一个反应其实是基于Mybatis的拦截器Interceptor机制实现,在设置参数的时候对参数进行拦截并加密,而在查询的时候对返回值进行解密。当然,不管是那种方案都需要对敏感字段进行标记。
实现可参考mybatis-plus实现数据字段加解密

PS: 该博客可以满足绝大部分场景了,但Map、List<String>没有考虑。不过这也是基于Interceptor的弊端,就是你需要考虑更多的细节。

方案二:基于Mybatis的TypeHandler

Mybatis支持针对特定字段的类型进行特殊处理,这为字段的加解密提供了可能。关于Mybatis的TypeHandler,大家可以看看官方的【类型处理器(typeHandlers)】
简单来说就一句话:在执行SQL之前对入参和返回值进行处理

而Mybatis本身通过这个进行类型转换。想知道其自带了多少TypeHandler可以看看mybatis的这个包:org.apache.ibatis.type

基于这个特点,我们就可以利用来实现字段的加解密功能。为了不影响那些不需要加解密的字段,我们就必须要在在特定的字段上进行指定。

对于select,可以通<resultMap>标签来指定,例如:

<resultMap type="org.apache.ibatis.submitted.rounding.User" id="usermap2">
    <result column="roundingMode" property="roundingMode"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值