在 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。
- 粉丝: 30
- 资源: 297
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip
- (源码)基于C语言的操作系统实验项目.zip
- (源码)基于C++的分布式设备配置文件管理系统.zip
- (源码)基于ESP8266和Arduino的HomeMatic水表读数系统.zip
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip