首页 理论教育 MyBatis插入获取主键实现

MyBatis插入获取主键实现

时间:2023-11-22 理论教育 版权反馈
【摘要】:但是自动生成的mapper中的insert方法,默认是不会返回主键的。这里使用如下方法来演示如何实现插入数据后返回主键id。表10-3 selectKey标签属性和含义在DAO中注入自定义Mapper,并且添加保存方法:编写测试代码,具体如下:运行结果如下:通过上面的运行结果可以看到程序返回了插入商品的id。当然如果使用的是Maven的mybatis-generator-maven-plugin插件,可以配置generateKey属性,让插件在自动生成Insert Mapper语句时,生成一条正确的selectKey元素。

MyBatis插入获取主键实现

业务开发时,有时候插入一条数据,需要立刻得到插入数据的id,例如插入一条商品数据,然后将插入成功的id返回给前端。但是自动生成的mapper中的insert方法,默认是不会返回主键的。这里使用如下方法来演示如何实现插入数据后返回主键id。

新建自定义Mapper类ProductManualMapper,添加如下内容:

978-7-111-61011-3-Part03-11.jpg

在项目的resources/mybatis/manual文件夹下面新建ProductManualMapper.xml[2]文件,在此文件中添加如下内容:

978-7-111-61011-3-Part03-12.jpg

<insert></insert>标签中没有resultType属性,但<selectKey></selectKey>标签是有的。通过设置<selectKey>中order的属性值,即order="AFTER",使其先执行插入语句,再执行查询语句。keyProperty="pro.id"表示将自增长后的Id赋值实体类中用@Param注解标注为‘pro’的类实例字段。如果没有添加@Param注解指定类实例名,那么<insert>标签中的pro名字要去掉。

selectKey标签属性和含义见表10-3。

10-3 selectKey标签属性和含义

978-7-111-61011-3-Part03-13.jpg

在DAO中注入自定义Mapper,并且添加保存方法:(www.xing528.com)

978-7-111-61011-3-Part03-14.jpg

编写测试代码,具体如下:

978-7-111-61011-3-Part03-15.jpg

运行结果如下:

978-7-111-61011-3-Part03-16.jpg

通过上面的运行结果可以看到程序返回了插入商品的id。

当然如果使用的是Maven的mybatis-generator-maven-plugin插件,可以配置generateKey属性,让插件在自动生成Insert Mapper语句时,生成一条正确的selectKey元素。在generatorConfig.xml配置table标签时添加<generatedKey>元素,具体配置如下:

978-7-111-61011-3-Part03-17.jpg

当执行生成命令mybatis-generator:generate后,就会发现Product对应的Mapper文件已经在<insert>标签内生成了返回主键的<selectKey>标签元素。建议使用此方法,因为手写<insert>毕竟很麻烦,而且容易出错。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈