2026/3/22 每日日志

7 阅读1分钟

今天继续跟着视频学习网页开发,完成了增添员工功能,进一步学习了数据库调用,mybatis @Insert @AutoFill等用法,代码实现如下

@PostMapping @ApiOperation(value = "新增员工") public Result save(@RequestBody EmployeeDTO employeeDTO) { log.info("新增员工{}", employeeDTO); employeeService.save(employeeDTO); return Result.success(); } @Override public void save(EmployeeDTO employeeDTO) { Employee employee = new Employee();

    // 对象属性拷贝
    BeanUtils.copyProperties(employeeDTO, employee);

    // 设置账号状态
    employee.setStatus(StatusConstant.ENABLE);

    // 设置密码
    employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));

    // 设置创建时间和修改时间
    LocalDateTime now = LocalDateTime.now();
    employee.setCreateTime(now);
    employee.setUpdateTime(now);

    // 记录创建人和修改人ID
    Long id = BaseContext.getCurrentId();
    employee.setCreateUser(id);
    employee.setUpdateUser(id);

    employeeMapper.insert(employee);
}

@Insert("insert into employee (name, username, password, phone, sex, id_number, create_time, update_time, create_user, update_user,status) " + "values "+"(#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status})") @AutoFill(value = OperationType.INSERT) void insert(Employee employee); 但在进行接口测试时出现异常, 最后发现是令牌校验失败,测试时没有令牌, public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //判断当前拦截到的是Controller的方法还是其他资源 if (!(handler instanceof HandlerMethod)) { //当前拦截到的不是动态方法,直接放行 return true; }

    //1、从请求头中获取令牌
    String token = request.getHeader(jwtProperties.getUserTokenName());

    //2、校验令牌
    try {
        log.info("jwt校验:{}", token);
        Claims claims = JwtUtil.parseJWT(jwtProperties.getUserSecretKey(), token);
        Long userId = Long.valueOf(claims.get(JwtClaimsConstant.USER_ID).toString());
        log.info("当前用户id:{}", userId);
        //3、通过,放行

        // 存储当前登录员工id
        BaseContext.setCurrentId(userId);

        return true;
    } catch (Exception ex) {
        //4、不通过,响应401状态码
        response.setStatus(401);
        return false;
    }
}

原来是被拦截器拦截,然后通过登录接口返回的token输入,成功通过。