mybatis返回插入的id1
需积分: 0 76 浏览量
更新于2022-08-08
收藏 18KB DOCX 举报
在 MyBatis 框架中,当我们执行一个插入(insert)操作时,有时需要获取新插入记录的自增主键值,例如数据库中的唯一标识 ID。MyBatis 提供了方便的功能来实现这一需求,这主要涉及到 `keyProperty` 和 `useGeneratedKeys` 两个属性的设置。
`<insert>` 标签是 MyBatis 用于定义 SQL 插入语句的地方。在描述中给出的示例中,我们看到以下 `<insert>` 标签:
```xml
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into query_rate_config (code,partner_type,search_count, booking_count, ticket_count,rate_type)
values (#{code,jdbcType=VARCHAR},#{partnerType,jdbcType=TINYINT},
#{searchCount,jdbcType=INTEGER}, #{bookingCount,jdbcType=INTEGER},
#{ticketCount,jdbcType=INTEGER},#{rateType,jdbcType=TINYINT})
</insert>
```
这里,`id` 是要映射到插入对象(这里是 `CountRateConfig` 类)的属性名,表示主键字段。`useGeneratedKeys="true"` 表示开启自动获取自增主键值的功能。`keyProperty="id"` 告诉 MyBatis 将生成的主键值设置到对应的 Java 对象的 `id` 属性上。
当执行插入操作后,MyBatis 会自动将数据库生成的主键值填充到插入对象的 `id` 属性中。在 Java 代码中,我们可以直接访问这个属性来获取新插入记录的 ID,如下所示:
```java
@Override
public int insert(CountRateConfig countRateConfig) {
int insertNum = Integer.parseInt(countRateConfigMapper.insert(countRateConfig) + "");
Long id = countRateConfig.getId(); // 直接通过对象获取 id
return insertNum;
}
```
在上面的 Java 代码中,`countRateConfigMapper.insert(countRateConfig)` 执行了 SQL 插入,并返回了受影响的行数。由于我们在 `<insert>` 标签中设置了 `useGeneratedKeys="true"` 和 `keyProperty="id"`,插入后 `countRateConfig` 对象的 `id` 已经被填充了数据库生成的 ID。因此,`countRateConfig.getId()` 直接就能获取到新插入记录的 ID。
注意,这个功能依赖于数据库的支持。对于大多数支持自增主键的数据库系统(如 MySQL、PostgreSQL),`useGeneratedKeys` 和 `keyProperty` 配置都可以正常工作。但在某些数据库(如 Oracle)中,可能需要额外的配置或使用特定的数据库特性来获取自增主键。
总结一下,MyBatis 中插入数据并返回插入记录的 ID 主要涉及以下知识点:
1. 使用 `<insert>` 标签定义插入语句。
2. 设置 `useGeneratedKeys="true"` 开启获取自增主键的功能。
3. 使用 `keyProperty` 指定对象的属性名,以便 MyBatis 可以将生成的主键值设置到对应属性。
4. 在 Java 代码中,通过插入对象的属性直接获取生成的主键值。
5. 确保数据库的主键 ID 是自增的,这是返回插入 ID 的前提条件。
了解并正确使用这些知识点,可以帮助我们在 MyBatis 中更高效地处理插入数据并获取新记录的 ID。
张盛锋
- 粉丝: 31
- 资源: 297
最新资源
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
- 操作系统实验ucore lab3
- DG储能选址定容模型matlab 程序采用改进粒子群算法,考虑时序性得到分布式和储能的选址定容模型,程序运行可靠 这段程序是一个改进的粒子群算法,主要用于解决电力系统中的优化问题 下面我将对程序进行详
- final_work_job1(1).sql
- 区块链与联邦学习结合:FedChain项目详细复现指南
- 西门子S7 和 S7 Plus 协议开发示例