mybatis 敏感数据处理

2020-09-18  本文已影响0人  蜀山_竹君子

使用

AESEncryptHandler进行加解密

一、Handler使用方式

1.1 数据层实体使用注解

对需要加解密的字段 增加@TableField(typeHandler = AESEncryptHandler.class)注解

@TableName(value = "td_ds_payment_setting", autoResultMap = true)
public class TdDsPaymentSetting extends SuperEntity {
    private static final long serialVersionUID = 1L;
    @TableId(value="id", type = IdType.ASSIGN_ID)
    private Long id;
    private String dsMerchantId;
    private String website;
    @TableField(typeHandler = AESEncryptHandler.class)
    private String email;

基于baseMapper内部方法实现增、删、改、查的使用Handler注解实现加解密
注意:@TableName注解需要增加autoResultMap = true,否则结果集不解密

二、自定义查询

如果不是基于baseMapper内部方法操作,需要显示放入handler

@Results({
@Result(column = "email", property = "email", typeHandler = AESEncryptHandler.class)})
@Select("select * from td_ds_payment_setting t  WHERE ds_merchant_id=#{userId}")
TdDsPaymentSetting selectPaymentByUserId(@Param("userId") String userId);

注意:自定义查询需要使用@select注解,否正解密不生效

三、敏感字段使用(精确操作)

@Override
public TdDsUser getDsByMail(String mail) {

    if(StringUtils.isEmail(mail)){
        List<TdDsUser> users = baseMapper.selectList(
                new QueryWrapper<TdDsUser>().eq("mail", AESTools.encrypt(mail))
        );
        return getUser(users);
    } else{
        throw new BusinessException("Unreasonable username.");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读