You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 12:51:02