mbatisPlus用TypeHandler可以很好的解决 所有敏感信息(电话号码、email、身份证号码等等)的加密

mbatisPlus 3.4.1 用TypeHandler可以很好的解决 所有敏感信息(电话号码、email、身份证号码等等)的加密

第一步:自定义 EncryptHandler 继承 BaseTypeHandler

public class EncryptHandler extends BaseTypeHandler<String> {
    
    private final static String KEY = "asdfghjklqwertyu"; // 16位任意
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, AES.encrypt(parameter, KEY));
    }
    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
        String columnValue = rs.getString(columnName);
        return AES.decrypt(columnValue, KEY);
    }
    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String columnValue = rs.getString(columnIndex);
        return AES.decrypt(columnValue, KEY);
    }
    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String columnValue = cs.getString(columnIndex);
        return AES.decrypt(columnValue, KEY);
    }
}

第二部: 定义实体类,主要2个注解的使用, autoResultMap、typeHandler

@Data
@TableName(value = "t_user", autoResultMap = true) // 默认为false,数据库存什么就取什么,设置为 true 为解谜后的数据
public class User {
    
    @TableField(value = "phone", typeHandler = EncryptHandler.class)
    private String phone;
}
posted @   河马小海豚  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示