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;
}

浙公网安备 33010602011771号