当前位置: 首页 > news >正文

SpringBoot企业级开发之【用户模块-更新用户基本信息】

接口文档:

开发前我们先看一下接口文档:

这是实现的预想结果:

实现思路:

设计一下我们的实现思路

拿起家伙实操:
 

1.controller

定义一个方法去修改用户:

注意!是【put请求】

//更改用户信息
    @PutMapping("/update")
    public Result update(@RequestBody User user) {
        //更新用户信息
       userService.update(user);
        return Result.success();
    }

2.service接口

3.service实现类

记得传入时间

  //更改用户信息
    @Override
    public void update(User user) {
        user.setUpdate_time(LocalDateTime.now());
        //调用Mapper更新用户信息
        userMapper.update(user);
    }

4.Mapper

//更新用户信息
    @Insert("UPDATE user SET nickname = #{nickname}, email = #{email},  update_time = now() WHERE id = #{id}")
    void update(User user);

测试案例:
 

带入json格式的代码

{
    "id":1,
    "username":"wwwwwww",
    "nickname":"wba",
    "email":"wacc"
}

成功结果:

参数校验:

之前我们是简单开发了更新用户信息的操作,但是接口文档的话对一些参数会有要求,如:

我们在之前有学过参数校验这一块,但是那些都是暴露出参数的,我们这次的更改是传入了实体类,如下:

解决:

我们遇到以上情况,可以在实体类下对应的字段去加入相关的注解:

Patten 自定义约束条件

步骤1:

在实体类加入相关的约束注释:

package org.huangyingyuan.pojo;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class User {
    @NotNull
    private Integer id;
    private String title;
    @NotEmpty
    @Pattern(regexp = "^\\S{1,10}$")
    private String nickname;
    private  String content;
    @JsonIgnore
    private String password;
    private String username;
    @NotEmpty
    @Email
    private String email;
    private LocalDateTime create_time;
    private LocalDateTime update_time;
}

步骤2:

在controller带入的实体类参数前加入【@Validated注解】,使其在实体类字段中添加的注解才能生效

    //更改用户信息
    @PutMapping("/update")
    public Result update(@RequestBody @Validated User user) {
        //更新用户信息
       userService.update(user);
        return Result.success();
    }

总结全部步骤:

以上是【更新用户详细信息的操作】

http://www.dtcms.com/a/124511.html

相关文章:

  • OSPF不规则区域
  • ubuntu20.04在mid360部署direct_lidar_odometry(DLO)
  • HP DeskJet 1212 Printer UOS/Ubuntu下驱动安装
  • Kaggle-Housing Prices-(回归+Ridge,Lasso,Xgboost模型融合)
  • DeepSeek+新媒体运营落地实操方法
  • 洛谷普及B3694 数列离散化
  • 深度学习实战:从零构建图像分类API(Flask/FastAPI版)
  • Zabbix告警处理:Zabbix server: Utilization of poller processes over 75%
  • Datawhale 入驻 GitCode:以开源力量推动 AI 教育公平与创新
  • 打分函数分类
  • FLINK框架:流式处理框架Flink简介
  • 【已解决】vscode升级后连接远程异常:“远程主机可能不符合XXX的先决条件”解决方法
  • 深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例
  • FISCO BCOS技术架构解析:从多群组设计到性能优化实践
  • 致远OA —— 表单数据获取(前端)
  • 【中检在线-注册安全分析报告】
  • 深度学习的下一个突破:从图像识别到情境理解
  • PyTorch 深度学习实战(35):图生成模型与分子设计
  • 贪心算法 day08(加油站+单调递增的数字+坏了的计算机)
  • 电视剧角色扮演AI Agent中的大模型操作流程
  • 【Java设计模式】第4章 简单工厂讲解
  • Oracle DROP、TRUNCATE 和 DELETE 原理
  • SpringBoot实现随机生成10位数字和字母组合
  • Maven学习总结(61)—— Maven 依赖冲突检测及其解决方案
  • HTML5+CSS3小实例:纯CSS绘制七巧板
  • Deepseek解锁科研绘图新方式
  • MCU的USB接口作为 USB CDC串口输出
  • 猫咪如厕检测与分类识别系统系列【一】 功能需求分析及猫咪分类特征提取
  • 【browser-use+deepseek】实现简单的web-ui自动化
  • 城电科技 | 探索光伏景观廊道:适用于零碳园区/公园/景区/校园/乡村长廊建设