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 @ 2023-02-26 19:09  河马小海豚  阅读(152)  评论(0)    收藏  举报