博客
关于我
关于Mybatis插入数据返回主键的问题
阅读量:543 次
发布时间:2019-03-09

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

遇到需要为新记录生成主键ID的MySQL插入操作问题时,有时简单的需求也会让我略微焦虑。记得以前做过类似的功能,但时光流逝具体实现细节也随之 görev,越简单的需求感觉越容易忘记细节。于是,就直接来看代码怎么做。

首先,查看一下数据库XML映射文件的配置。需要注意的是,在插入操作中如果需要自动生成主键ID,一定要配置好useGeneratedKeys="true"keyProperty="id"这两个属性。这些配置告诉数据库在插入新记录时,自动为记录生成唯一的主键ID,并将其指定为id字段。要注意的是,如果没有配置这些属性,可能会遇到主键生成失败或者重复的错误。

具体来看数据库XML映射文件中插入语句的配置:

INSERT INTO exam (user_id, total_num, correct_num, error_num, create_time) VALUES (#{ userId }, #{ totalNum }, #{ correctNum }, #{ errorNum }, #{ createTime })

可以看到,usegeneratedkeys="true"keyproperty="id"这两个属性配置正确后,插入操作就会自动为新插入的记录生成唯一的主键ID,并将其存储到数据库中。

然后,再看一下Java代码如何操作这一块。调用上述插入方法后,期望返回的新记录的ID可以通过exam.getId()来获取。具体实现如下:

examService.create(exam);Long id = exam.getId();

总体来看,关键在于XML映射文件中插入操作的配置是否正确。在实际应用中,要确保以下几点:

  • XML映射文件中插入操作配置带有usegeneratedkeys="true"keyproperty="id",否则主键ID不会自动生成
  • 确保数据库表examid字段被定义为主键代理列(auto_incrementidentity
  • Java对象的getId()方法返回的是数据库生成的主键值
  • 遇到类似问题时,只需要注意上述几点,就能顺利实现需求。数据库的自增列功能确实是个省心的特性,只要配置对,程序就能很容易地获取到新的记录ID。

    转载地址:http://yfgiz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现nested brackets嵌套括号算法(附完整源码)
    查看>>
    Objective-C实现nevilles method多项式插值算法(附完整源码)
    查看>>
    Objective-C实现newton raphson牛顿-拉夫森算法(附完整源码)
    查看>>
    Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
    查看>>
    Objective-C实现newton_forward_interpolation牛顿前插算法(附完整源码)
    查看>>
    Objective-C实现newton_raphson牛顿拉夫森算法(附完整源码)
    查看>>
    Objective-C实现ngram语言模型算法(附完整源码)
    查看>>
    Objective-C实现NLP中文分词(附完整源码)
    查看>>
    Objective-C实现NLP中文分词(附完整源码)
    查看>>
    Objective-C实现NMS非极大值抑制(附完整源码)
    查看>>
    Objective-C实现NMS非极大值抑制(附完整源码)
    查看>>
    Objective-C实现Node.Js中生成一个UUID/GUID算法(附完整源码)
    查看>>
    Objective-C实现not gate非门算法(附完整源码)
    查看>>
    Objective-C实现NQueen皇后问题算法(附完整源码)
    查看>>
    Objective-C实现number of digits解字符数算法(附完整源码)
    查看>>
    Objective-C实现NumberOfIslands岛屿的个数算法(附完整源码)
    查看>>
    Objective-C实现numerical integration数值积分算法(附完整源码)
    查看>>
    Objective-C实现n个取m个数的组合算法(附完整源码)
    查看>>
    Objective-C实现N数理论(质素相关)算法(附完整源码)
    查看>>
    Objective-C实现n皇后问题算法(附完整源码)
    查看>>