博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis-insert数据返回主键id
阅读量:2222 次
发布时间:2019-05-08

本文共 1706 字,大约阅读时间需要 5 分钟。

一,前言

在使用Mybatis做insert操作时,有时候我们希望能够或得插入后数据的主键,例如一个自增id字段,在后续的逻辑中我们可以会使用到这个字段做数据结构上的关联,以下是Mybatis中的实现

二,场景

我们模拟一个需要insert数据后返回主键,在后续逻辑中使用这个主键的场景:现在我们有一个满减的需求,数据库表设计为满减基础信息表,满减等级表,和满减商品表如:    基本信息:买牙膏送牙刷,    满减等级:100-10,200-30,300-50    满减商品:1000001,1000002,1000003如此一来,我们需要靠基本信息表的主键id来关联等级和商品的所属情况

三,insert数据返回主键id

使用@Options(useGeneratedKeys = true, keyProperty = “id”, keyColumn = “id”)返回主键id

/** * Created by Brave on 2017/3/15. */@Mapperpublic interface PromotionFullcutMapper {
@Insert("insert into promotion_fullcut (name, create_time, update_time, " + "create_by, update_by, active, begin_time, end_time) " + "values (" + "#{name, jdbcType=VARCHAR}, " + "#{createTime, jdbcType=TIMESTAMP}, " + "#{updateTime, jdbcType=TIMESTAMP}, " + "#{createBy, jdbcType=VARCHAR}, " + "#{updateBy, jdbcType=VARCHAR}, " + "#{activeStatus, jdbcType=INTEGER}, " + "#{beginTime, jdbcType=TIMESTAMP}, " + "#{endTime, jdbcType=TIMESTAMP}" + ")") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int insertFullCutInfo(FullCutEntity FullCutObj);}

四,测试

在我们的数据库中已经有一组id=1的数据,我们先取出来这组数据,再添加进行测试

// testFullCutEntity fullCutEntity = promotionFullcutService.queryFullCutDetail(1);promotionFullcutService.insertFullCutDetail(fullCutEntity);

测试:

取出数据库中id=1的一组数据:

mybatis-id1

使用这组数据,重新插入一组到数据库并返回主键id:

mybatis_id2

此时返回的主键id=17为新插入数据的主键id,并在后续的逻辑中使用此id,完成数据关联

查看数据库中的数据关系:

基础信息表:17  买牙膏送牙刷  2017-11-21 14:16:11     admin       1   2017-11-01 14:16:27 2017-11-30 14:16:30等级表:22  17  1   100.00  10.0023  17  2   200.00  30.0024  17  3   300.00  50.00Sku表:7   17  10000018   17  10000029   17  1000003
你可能感兴趣的文章
夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
查看>>
Java 未来行情到底如何,来看看各界人士是怎么说的
查看>>
IntelliJ 平台 2020 年路线图
查看>>
走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
查看>>
微软宣布加入 OpenJDK,打不过就改变 Java 未来!
查看>>
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
查看>>
为什么强烈推荐 Java 程序员使用 Google Guava 编程!
查看>>
先搞清楚这些问题,简历上再写你熟悉Java!
查看>>
【数据库】关系数据库和非关系数据库的优缺点
查看>>
【数据结构】动态顺序表
查看>>
Markdown的基础使用
查看>>
Linux基础命令
查看>>
【C语言】交换两个数值的三种方法
查看>>
【数据结构】栈的简单理解以及对栈的基本操作
查看>>
【数据结构】简单不带环迷宫的实现(用栈实现)
查看>>
【C语言】简单的了解递归(求斐波那契,n的阶乘,字符串长度,把一个整型(无符号),转化为字符型并打印出来)
查看>>
【数据结构】动态栈的实现
查看>>
【数据结构】简单的迷宫(用递归实现)
查看>>
【数据结构】队列的基本认识和队列的基本操作
查看>>
【数据结构】循环队列的认识和基本操作
查看>>