实战篇05:更新用户基本信息

本文主要讲解了如何使用PUT方法更新用户基本信息,涉及接口设计、参数验证、Controller与Service层实现,以及Mapper层的SQL操作。
摘要由CSDN通过智能技术生成

实战篇05:更新用户基本信息

一、接口信息

1.1 基本信息

请求路径:/user/update

请求方式:PUT

接口描述:该接口用于更新已登录用户的基本信息(除头像和密码)

1.2 请求参数

请求参数格式:application/json

请求参数说明:

参数名称说明类型是否必须备注
id主键IDnumber
username用户名string5~16位非空字符
nickname昵称string1~10位非空字符
email邮箱string满足邮箱的格式

请求数据样例:

{
    "id":5,
    "username":"wangba",
    "nickname":"wb",
    "email":"wb@itcast.cn"
}

1.3 响应数据

响应数据类型:application/json

响应参数说明:

名称类型是否必须默认值备注其他信息
codenumber必须响应码, 0-成功,1-失败
messagestring非必须提示信息
dataobject非必须返回的数据

响应数据样例:

{
    "code": 0,
    "message": "操作成功",
    "data": null
}

二、业务流程

  1. 前端使用Put提交修改信息,参数中使用注解@RequestBody User user,将前端返回的数据封装成user对象进行输入参数使用
  2. Service层和Mapper层提供update方法供Controller层进行使用

在这里插入图片描述

三、编写Controller

@PutMapping("/update")
public Result update(@RequestBody User user){
    userService.update(user);
    return Result.success();
}

四、实现Service的update方法

4.1、在UserService接口类中声明update方法

public interface UserService {
    // 根据用户名查询用户
    User findByUserName(String username);

    // 注册
    void register(String username, String password);

    // 更新
    void update(User user);
}

4.2、在UserviceImpl实现类中实现update方法

获取当前的修改时间,并进行更新

@Override
public void update(User user) {
    user.setUpdateTime(LocalDateTime.now());
    userMapper.update(user);
}

五、实现Mapper的update方法

@Mapper
public interface UserMapper {
    // 根据用户名进行查询
    @Select("select  * from user where username=#{username}")
    User findByUserName(String username);

    // 添加
    @Insert("insert into user (username,password,create_time,update_time) " +
            "values (#{username},#{md5String},now(),now())")
    void add(String username, String md5String);

    @Update("update user set nickname=#{nickname},email=#{email},update_time=#{updateTime} where id=#{id}")
    void update(User user);
}

六、测试更新功能

  1. 使用postman以put方式访问
  2. 在Body中使用raw编写访问json,实现更新测试

在这里插入图片描述

七、修改Controller实现参数校验

7.1、校验规则

请求参数说明:

参数名称说明类型是否必须备注
id主键IDnumber
username用户名string5~16位非空字符
nickname昵称string1~10位非空字符
email邮箱string满足邮箱的格式

7.2、使用Spring Validation关键字实现校验

  1. 由于UserController中将接收的参数封装进了User类中,因此需要在User类中增加Spring Validation关键字实现校验功能
  2. 在UserController的update方法中使用Spring Validation进行参数校验

在这里插入图片描述

@Data
public class User {
    @NotNull
    private Integer id;//主键ID
    private String username;//用户名
    @JsonIgnore // 转换成jason时忽略此字段
    private String password;//密码
    @NotNull
    @Pattern(regexp = "^\\S{1,10}$")
    private String nickname;//昵称
    @NotNull
    @Email
    private String email;//邮箱
    private String userPic;//用户头像地址
    private LocalDateTime createTime;//创建时间
    private LocalDateTime updateTime;//更新时间
}

@PutMapping("/update")
public Result update(@RequestBody @Validated User user){
    userService.update(user);
    return Result.success();
}
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值