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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端