当前位置: 首页 > 编程笔记 >

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

洪梓
2023-03-14
本文向大家介绍Mybatis返回插入的主键问题解决方案,包括了Mybatis返回插入的主键问题解决方案的使用技巧和注意事项,需要的朋友参考一下

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();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Mybatis返回插入主键id的方法,包括了Mybatis返回插入主键id的方法的使用技巧和注意事项,需要的朋友参考一下 在mapper的xml文件中配置  useGeneratedKeys 以及 keyProperty 返回Id即可 PS:Mybatis中insert中返回主键ID的方法 1、XyzMapper.xml 或 2、XyzMapper.java 3、要在map或c中有一

  • 本文向大家介绍ajaxFileUpload插件,C#返回Json数据报错问题的解决方案,包括了ajaxFileUpload插件,C#返回Json数据报错问题的解决方案的使用技巧和注意事项,需要的朋友参考一下 报错信息一:jQuery.handleError is not a function   上传图片的时候,通过F12,查看到这个错误。 解决方案: jquery版本问题,handlerErro

  • 本文向大家介绍python 解决函数返回return的问题,包括了python 解决函数返回return的问题的使用技巧和注意事项,需要的朋友参考一下 定义一个带返回值的函数,需要使用return语句在调用这个函数时返回一个目标值,当没有return时,函数默认返回None。 分析下面两个程序: out: 2017-9-25 out: 2017-9-25 None 对于第一个程序,仅仅调用了'no

  • 我已经通过 pom 的方式引入了 MyBatis 的依赖,pom 文件的部分内容如下: 但是当我尝试导入包的时候: IDEA 提示“无法解析符号 'ibatis'”,而当我运行程序时,终端提示 org.apache.ibatis.annotations 包不存在。 我该如何解决这个问题?mybatis-spring-boot-starter的依赖应该包含org.apache.ibatis.anno

  • 强大的textHello Optaplanner专家, 爱丽丝

  • 本文向大家介绍详解mybatis plus使用insert没有返回主键的处理,包括了详解mybatis plus使用insert没有返回主键的处理的使用技巧和注意事项,需要的朋友参考一下 项目使用springboot搭建。最初的时候是使用mybatis,后来升级到mybatis plus。按照mp的官网介绍,使用mp的insert方法,对于自增的数据库表,mp会把主键写入回实例的对应属性。但实际操