mybatis-plus(mysql+springboot)实现字段的加解密

本文介绍了如何在项目开发中使用MyBatis-Plus的BaseTypeHandler实现对身份证号、手机号等敏感字段的脱敏操作,通过自定义加密算法并集成到数据库加解密Handler中,同时在实体类中设置typeHandler进行处理,以及通过Dubug进行简单测试的过程。
摘要由CSDN通过智能技术生成

项目开发,会对表字段进行进行脱敏操作,如身份证号,手机号等等,通过继承mybatis-plusti提供的BaseTypeHandler类来统一处理这类问题

1.导入依赖(gradle)  加密算法可以使用现成的(如:hutool包提供的AES),也可以自定义,最好是自定义,我这里使用的是自定义的加密算法

2.增加数据库加解密Handler,指定加解密字段

package com.gongqibing.turnright.application.util.encrypthandler;

import com.qibingdaojia.encrypt.util.TurnRightEncryptUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;

@MappedJdbcTypes(JdbcType.VARCHAR)
public class NeedEncryptAttributeHandler extends BaseTypeHandler<String> {


    private static final String RETURN_NULL_SIGN = null;

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {

        if (StringUtils.isEmpty(parameter)) {
            ps.setString(i, RETURN_NULL_SIGN);
            return;
        }
        //加密,使用通用方法
        String encrypt = TurnRightEncryptUtil.encrypt(parameter);
        ps.setString(i, encrypt);
    }

    @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 (Objects.isNull(value)) {
            return RETURN_NULL_SIGN;
        }
        return TurnRightEncryptUtil.decrypt(value);
    }



}

3.在实体类中需要加解密的字段添加上typeHandler,指定使用处理器

4.简单测试(使用dubug,跟着流程看到的效果更好,只要走到NeedEncryptAttributeHandler类,说明以及拦截到)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于这个问题,需要先了解什么是Spring BootMyBatis-Plus、Ajax、Layui和MySQL,然后再利用它们实现员工的登录注册功能。 1. Spring Boot是一个开源的Java框架,用于构建Spring应用程序。它采用“约定优于配置”的原则,能够快速地构建可独立运行的、生产级别的Spring应用程序。 2. MyBatis-PlusMyBatis的一个增强工具包。它提供了很多便利的功能,例如代码生成器、分页插件、性能分析插件等,可以减轻开发人员的工作量。 3. Ajax是一种Web开发技术,可以用于在不重新加载整个页面的情况下更新部分页面。它能够提高用户体验,并减少服务器端的负载。 4. Layui是一款轻量级的前端UI框架,提供了丰富的组件和模板,可以快速地构建美观、实用的Web界面。 5. MySQL是一种关系型数据库管理系统,它采用了SQL语言来操作数据库。它是最流行的开源数据库之一,被广泛应用于Web开发领域。 基于以上技术,可以实现员工的登录注册功能。 1. 使用Spring BootMyBatis-Plus构建后端API。在员工表中添加用户名和密码字段,编写登录和注册接口,使用MyBatis-Plus的代码生成器来生成数据库访问层的代码。 2. 使用Ajax来实现前端与后端的异步通信。当员工填写了用户名和密码后,通过Ajax提交给后端,后端进行验证并返回结果。如果验证通过,前端跳转到主页面,否则给出相应的错误提示。 3. 使用Layui来实现前端页面的美化。根据设计图,使用Layui的组件和模板来构建登录和注册页面。为了提高用户体验,可以使用Layui的表单验证组件来对输入内容进行验证。 4. 使用MySQL来存储员工的信息。在员工表中添加用户名和密码字段,使用MySQL提供的用户名和密码验证功能来进行验证。 最后,需要将后端API部署到服务器上,并将前端页面部署到Web服务器上,使用户可以访问到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值