mybatis添加成功后返回生成的id

博客介绍了在MyBatis中实现主键自动生成的设置,只需加入userGeneratedKeys=“true” keyProperty=“id” ,这里的主键是由MySQL自动递增生成,而非Java程序传入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只需要加入userGeneratedKeys=“true” keyProperty=“id” 相当于主键必须自动生成(这里指的是,mysql设置的自动递增),而不是java程序生成的(指传入的),假设非想要你直接取不就完了吗,没有必要用mybatis的啊。

	<insert id="insert1" parameterType="TUser" useGeneratedKeys="true"		keyProperty="id">
### 使用 MyBatis 插入数据后获取生成ID 在使用 MyBatis 进行数据库插入操作时,可以通过配置 `useGeneratedKeys` 和设置 `keyProperty` 来自动获取由数据库生成的主键 ID。 对于 MySQL 数据库,在执行插入语句之后可以利用 `LAST_INSERT_ID()` 函数来取得最近一次插入记录所对应的自主键值[^2]。具体来说,当定义映射文件中的 `<insert>` 节点时,应指定属性: - **useGeneratedKeys**: 设置为 true 表明要启用 JDBC 的 getGeneratedKeys 方法来检索刚插入的数据产生的主键。 - **keyProperty**: 将新创建的对象字段名作为参数传递给这个属性,用于接收并存储返回来的主键值。 例如,如下所示是一个典型的 XML 映射片段,它展示了如何正确地配置这些选项以便于能够成功取回生成的关键字[^1]: ```xml <insert id="insert" parameterType="com.test.entity.main.LawsB" useGeneratedKeys="true" keyProperty="id"> <!-- 自动生成警告 --> insert into LAWS_B (TYPE, NAME, PDATE) values (#{type,jdbcType=NVARCHAR}, #{name,jdbcType=NVARCHAR}, #{pdate,jdbcType=NVARCHAR}) </insert> ``` 另外需要注意的是,虽然调用者可能会期望从方法签名处得到该标识符(即希望函数返回整型代表新增加条目的唯一编号),但实际上此接口通常设计成返回影响了多少行而非具体的 ID 值;真正的自动生成 ID 已经被填充到了传入实体类实例里对应成员变量上[^4]。 因此,在编写 Java 代码时应当直接访问已更新过的 POJO 实体对象以读取出最新的主键信息。 ```java LawsB lawsB = new LawsB(); lawsB.setType("example"); lawsB.setName("Example Name"); lawsB.setPDate(new Date()); // 执行插入操作 mapper.insert(lawsB); // 获取生成ID Integer generatedId = lawsB.getId(); // 此处假设 getId 返回 Integer 类型 System.out.println("The Generated Id is:" + generatedId); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值