Spring Boot如何将路径变量中的ID插入用户实体模型并保存到数据库
修改方案
你需要修改2处核心代码即可实现需求:
1. 修改User实体类
- 移除主键上的
@GeneratedValue注解,关闭id自增策略 - 新增
@PrePersist注解修饰的方法,在数据插入数据库前自动拼接fullName值
修改后的实体类核心代码如下:
@Entity @Table(name = "users") public class User implements Serializable{ @Id // 删掉原有的@GeneratedValue注解,关闭自增逻辑 private Long id; @Column(name = "first_name", length = 25) private String firstName; @Column(name = "last_name", length = 25) private String lastName; @Column(name = "full_name", length = 50) private String fullName; // 原有构造方法、getter、setter保持不变 // 新增该方法:数据插入前会自动执行 @PrePersist public void prePersist() { this.fullName = this.firstName + " " + this.lastName; } }
2. 修改UserController的create方法
新增@PathVariable注解接收路径中的id值,手动赋值给User对象:
@RestController @RequestMapping("/api") public class UserController{ @Autowired private UserService userService; @PostMapping("/{id}") public User create(@PathVariable("id") Long id, @RequestBody User user){ // 把路径中获取的id赋值给user对象 user.setId(id); return userService.save(user); } }
验证效果
修改完成后重启服务,调用POST http://localhost:8080/api/5并传入对应请求体,即可得到你预期的返回结果,同时数据库中存储的id和fullName也会和返回值保持一致。
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

