MyBatis-Plus使用注解对字段进行加密,保存加密,读取解密

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

1 创建注解

public class EncryptHandler extends BaseTypeHandler<String> {

    /**
     * 设置参数
     */
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        if (StrUtil.isEmpty(parameter)) {
            ps.setString(i, null);
            return;
        }
        ps.setString(i, encrypt(parameter));
    }

    /**
     * 获取值
     */
    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return decrypt(rs.getString(columnName));
    }

    /**
     * 获取值
     */
    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return decrypt(rs.getString(columnIndex));
    }

    /**
     * 获取值
     */
    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return decrypt(cs.getString(columnIndex));
    }
    public String decrypt(String value) {
        if (StrUtil.isEmpty(value)) {
            return null;
        }
        具体加密方法
        return ""
    }
    public String decrypt(String value) {
        if (StrUtil.isEmpty(value)) {
            return null;
        }
        具体解密方法
        return "";
    }
}

2 在实体类的参数上添加注解

@TableField(typeHandler = EncryptHandler.class)
private String psw;
posted @ 2024-07-09 15:21  鱼鱼寡欢  阅读(486)  评论(0编辑  收藏  举报