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

网友投稿 390 2022-11-21


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

然后接收的地方:

注意了,这里主键Id是不会在,返回值里面的。

而是在参数里面取。

int insertSelective(HTRAVEL record);

//这里才是本次插入的主键Id

record.getId();


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈Map集合中get不存在的key值,会抛出异常吗?
下一篇:浅谈HashMap、HashTable的key和value是否可为null
相关文章

 发表评论

暂时没有评论,来抢沙发吧~