springboot mybatis mysql新增后返回id(ai生成)

在Spring Boot项目中使用MyBatis和MySQL时,若想在插入数据后返回生成的ID,可以在Mapper接口的插入方法上使用@Options注解,并设置useGeneratedKeys属性为true,同时指定keyProperty为实体类中对应ID的属性名。

以下是一个简单的示例:

1、实体类(假设为User):

java 复制代码
public class User {
    private Long id; // 假设ID是自增长的Long类型
    private String name;
    // 省略其他属性、构造函数、getter和setter方法
}

2、Mapper接口:

java 复制代码
@Mapper
public interface UserMapper {
    @Insert("INSERT INTO users (name) VALUES (#{name})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertUser(User user);
}

在上述代码中,当insertUser方法被调用时,插入操作执行后,MyBatis会自动将生成的ID回填到传入对象的id属性中。

确保MySQL表的ID列设置了自增属性,例如:

sql 复制代码
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50),
  PRIMARY KEY (id)
);

这样,在插入记录后,MyBatis就会把生成的ID设置到User对象的id属性上。

注意

返回id赋值了user对象的id,不是insertUser函数的返回值。

相关推荐
流烟默2 分钟前
Spring Boot 异常响应被序列化为 XML 的排查与修复
xml·spring boot·后端
paopaokaka_luck40 分钟前
民宿管理系统 (AI民宿总结、协同过滤推荐算法、WebSocket 在线咨询、ECharts 经营分析、房态与结算联动、 民宿预订业务闭环)
java·人工智能·spring boot·websocket·数据分析·echarts·推荐算法
猫咪很可爱1 小时前
MySQL 定时 DDL 导致 mysqldump 备份失败:场景模拟、排查与优化建议
mysql
数据库小学妹1 小时前
MySQL内存占用过高怎么排查?分层定位与OOM根因
数据库·经验分享·mysql·内存·oom
毕设单片机2 小时前
springboot志愿服务平台的设计与实现 36731
java·spring boot·mysql·志愿服务平台
云絮.2 小时前
mybatis(二)
java·数据库·mybatis
Dxy12393102163 小时前
MySQL分库分表如何选择ID
mysql
imDwAaY3 小时前
SQL 查询突然变慢了?一篇讲清慢 SQL 排查思路
后端·mysql
xiaoqiMikko3 小时前
Redis 实战(基础篇):把一个老 RedisUtil 搬到 Spring Boot 4,一路踩出来的坑(真机实测)
java·spring boot·redis
花间相见3 小时前
【计算基础|MySQL03】【上手】多表查询与聚合
数据库·mysql