接口文档:
开发前我们先看一下接口文档:
这是实现的预想结果:
实现思路:
设计一下我们的实现思路
拿起家伙实操:
1.controller
定义一个方法去修改用户:
注意!是【put请求】
//更改用户信息@PutMapping("/update")public Result update(@RequestBody User user) {//更新用户信息userService.update(user);return Result.success();}
2.service接口
3.service实现类
记得传入时间
//更改用户信息@Overridepublic 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 {@NotNullprivate Integer id;private String title;@NotEmpty@Pattern(regexp = "^\\S{1,10}$")private String nickname;private String content;@JsonIgnoreprivate String password;private String username;@NotEmpty@Emailprivate 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();}
总结全部步骤:
以上是【更新用户详细信息的操作】