Mybatis返回插入的主键问题解决方案

作者:手撕高达的村长 时间:2023-05-06 02:58:03 

MyBatis添加记录后获取主键ID,这是一个很常见的需求。这个需求有分为两种情况:(1)添加单条记录时获取主键值;(2)获取批量添加记录时各记录的主键值。

备注:MyBatis从3.3.1版本开始支持批量添加记录并返回各记录主键字段值。

1、添加单一记录时返回主键ID(方法一)

此种方法主要思路是:使用<insert>标签或者@Insert注解的属性:useGeneratedKeys、keyProperty、keyColumn。下面分别以xml映射器和注解映射器分别详细阐述一下。

2、添加单一记录时返回主键ID(方法二)

在上面方法一中,如何获取自增的id呢,估计很多人还有点疑惑,其实原理很简单:当插入数据之后,mybatis再次查询mysql数据库,获得了注解id,然后填充到person对象的id属性的。

业务中,会遇到这样的问题,就是感觉返回的主键,插入作为其他表的外键。

那么问题来了,如何去实现,其实方法比较简单,这里就是重点记录下,会出现的误区。

用自动生成sql工具的话,加上下面这句话

<generatedKey column="id" sqlStatement="JDBC" identity="true" />

生成的sql文件就会带 useGeneratedKeys="true" keyProperty="travelId" 属性。

首先,sql文件里面的需要加上两个属性。

<insert id="insertSelective" parameterType="com.sun.dto.HTRAVEL" useGeneratedKeys="true" keyProperty="travelId" ></insert>

  • useGeneratedKeys="true" 表示给主键设置自增长

  • keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段。

  • parameterType="com.chenzhou.mybatis.User" 这个属性指向传递的参数实体类

然后接收的地方:
注意了,这里主键Id是不会在,返回值里面的。

而是在参数里面取。

int insertSelective(HTRAVEL record);
//这里才是本次插入的主键Id
record.getId();

来源:https://www.cnblogs.com/sunxun/p/9661109.html

标签:Mybatis,返回,主键
0
投稿

猜你喜欢

  • Lombok使用@Tolerate实现冲突兼容问题

    2021-06-27 06:50:55
  • springboot 使用mybatis查询的示例代码

    2022-03-30 03:19:09
  • maven工程中jar包瘦身的五种方法

    2023-11-04 05:01:54
  • WinForm项目中添加帮助文档功能

    2022-12-30 02:22:50
  • struts2 validation.xml 验证规则代码解析

    2021-09-14 22:01:27
  • Android中使用ScrollView指定view的顶部悬停效果

    2021-10-02 13:32:38
  • Android实现秒表功能

    2023-08-21 02:15:41
  • 关于springboot集成swagger及knife4j的增强问题

    2023-11-29 00:43:50
  • java 按行读取文件并输出到控制台的方法

    2022-10-28 22:48:20
  • Springboot+Mybatis-plus不使用SQL语句进行多表添加操作及问题小结

    2021-09-30 10:31:10
  • Springboot添加支付接口

    2023-06-21 00:10:20
  • Java装饰器设计模式初探

    2021-08-17 17:23:46
  • DataGridView自定义单元格表示值、Error图标显示的方法介绍

    2023-12-09 19:07:04
  • Android开发之SQLite的使用方法

    2022-11-12 05:26:38
  • 浅谈Java基础知识之BigDecimal

    2021-09-06 16:49:27
  • Android编程实现读取本地SD卡图片的方法

    2023-01-10 01:32:30
  • Java编写实现坦克大战小游戏

    2023-11-24 09:15:34
  • 详解SpringBoot+Lucene案例介绍

    2023-03-05 01:15:22
  • Java转JSON串的几种方式

    2023-08-24 07:38:47
  • 深入理解Android 5.0中的Toolbar

    2022-08-28 02:26:39
  • asp之家 软件编程 m.aspxhome.com