mybatis插入数据后如何返回新增数据的id值

 更新时间:2022年06月14日 09:17:24   作者:LC超人在良家  
当往mysql数据库插入一条数据时,有时候需要知道刚插入的信息,下面这篇文章主要给大家介绍了关于mybatis插入数据后如何返回新增数据id值的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1、自增主键情况下插入数据获取自增主键值

mybatis为我们提供了一个方法,能够插入数据时获取自动生成的值,并且把取的值赋值给实体类的某一属性

设置方法:

要求:主键必须是自增的

<insert id = "insert" useGeneratedKeys = "true" keyProperty = "id">
    SQL语句
</insert>

useGeneratedKeys = true  //是否返回自增主键值

keyProperty = “xxx”  //将值赋给哪个属性,这个属性是方法参数中的

此时就是插入数据的实体类点.getId()可以得到

2、主键非自增的情况下获取主键值

一般我们使用来实现。一个块中只能有一个

下面我们了解一下selectKey中的属性

resultType:这个我们就不用解释了,返回类型

order:它有两个取值:1、BEFORE在添加之前查询 2、AFTER在添加之后查询  //这两个都是全大写

keyProperty:将取值赋值给方法参数,如果方法参数是实体类,一般赋值给实体类的字段

keyColumn:对应表的列名

一个selectKey中必须要有 resultType,order,keyProperty

after示例:查询最后一次添加的主键

<insert id = "insertEmp">
    <selectKey resultType = "integer" order = "AFTER" keyProperty = "eid" >
            select last_insert_id()    //查询最后一次添加的主键,mysql函数
    </selectKey>
    insert into dept(id,deptname) values(#{id},#{deptname})
</insert>

before示例:假设Id不是自增长,我们希望在insert之前获取mysql的UUID添加到数据表作为主键Id

<insert id = "insertDept">
    <selectKey resultType = "string" order = "BEFORE" keyProperty = "id">
        select uuid() as id
    </selectKey>
    insert into dept(id,name) values(#{id},#{name})
</insert>

3、keyColumn作用

问题定义:有时候我们希望keyProperty返回的个数超过1的时候,能不能插入数据的时候返回多个值

1、把selectKey的结果赋值给keyProperty的各个属性

2、赋值规则:keyProperty和keColumn的列数相对应:1对1,2对2…

<insert id="xxx">
        <selectKey resultType="com.entity.Dept" order="BEFORE" keyProperty="id,name" keyColumn="cid,cname">
            select cid,cname from Category limit 1;
        </selectKey>
        insert into dept(id,name) values (#{id},#{name})
    </insert>
<!--    代码解释:从Category中查询出cid,cname 赋值在方法参数中,然后添加到dept表-->

总结

到此这篇关于mybatis插入数据后如何返回新增数据id值的文章就介绍到这了,更多相关mybatis返回新增数据id值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础题新手练习(二)

    Java基础题新手练习(二)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • java实现直线分形山脉

    java实现直线分形山脉

    这篇文章主要为大家详细介绍了java实现直线分形山脉,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 详解JavaEE中Apollo安装使用小结

    详解JavaEE中Apollo安装使用小结

    这篇文章主要介绍了详解JavaEE中Apollo安装与使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 深入浅出JAVA MyBatis-快速入门

    深入浅出JAVA MyBatis-快速入门

    这篇文章主要介绍了在今天这篇博文中,我将要介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和hibernate之间存在着怎么样的关系,大家这些问题一起通过本文学习吧
    2021-06-06
  • 详解Java ES多节点任务的高效分发与收集实现

    详解Java ES多节点任务的高效分发与收集实现

    ElasticSearch 是一个高可用开源全文检索和分析组件。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用
    2021-06-06
  • springboot @Controller和@RestController的区别及应用详解

    springboot @Controller和@RestController的区别及应用详解

    这篇文章主要介绍了springboot @Controller和@RestController的区别及应用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 详解Spring Boot中使用Flyway来管理数据库版本

    详解Spring Boot中使用Flyway来管理数据库版本

    这篇文章主要介绍了详解Spring Boot中使用Flyway来管理数据库版本,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • SpringBoot集成Shiro进行权限控制和管理的示例

    SpringBoot集成Shiro进行权限控制和管理的示例

    这篇文章主要介绍了SpringBoot集成Shiro进行权限控制和管理的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 简化API提升开发效率RestTemplate与HttpClient OkHttp关系详解

    简化API提升开发效率RestTemplate与HttpClient OkHttp关系详解

    这篇文章主要为大家介绍了简化API,提升开发效率,RestTemplate与HttpClient OkHttp关系介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • ajax实时监测与springboot的实例分析

    ajax实时监测与springboot的实例分析

    本文将介绍如何使用 AJAX 技术结合 Spring Boot 构建一个实时反馈用户输入的应用,我们将创建一个简单的输入框,当用户在输入框中键入文本时,应用将异步地向后端发送请求,感兴趣的朋友跟随小编一起看看吧
    2024-07-07

最新评论