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 Annotation注解相关原理代码总结

    Java Annotation注解相关原理代码总结

    这篇文章主要介绍了Java Annotation注解相关原理代码总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 浅析Java中String与StringBuffer拼接的区别

    浅析Java中String与StringBuffer拼接的区别

    String拼接会创建一个新的String对象,存储拼接后的字符串,StringBuffer拼接是直接在本身拼接,会即时刷新。下面通过本文给大家介绍Java中String与StringBuffer拼接的区别,感兴趣的朋友一起看看吧
    2017-06-06
  • feign调用第三方接口,编码定义GBK,响应中文乱码处理方式

    feign调用第三方接口,编码定义GBK,响应中文乱码处理方式

    这篇文章主要介绍了feign调用第三方接口,编码定义GBK,响应中文乱码处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Javaweb接收表单数据并处理中文乱码

    Javaweb接收表单数据并处理中文乱码

    这篇文章主要介绍了Javaweb接收表单数据并处理中文乱码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot HTTP 400排查方式

    SpringBoot HTTP 400排查方式

    这篇文章主要介绍了SpringBoot HTTP 400排查方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Spring Boot应用配置常用相关视图解析器详解

    Spring Boot应用配置常用相关视图解析器详解

    这篇文章主要给大家介绍了关于Spring Boot应用配置常用相关视图解析器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Maven项目引用第三方jar包找不到类ClassNotFoundException

    Maven项目引用第三方jar包找不到类ClassNotFoundException

    这篇文章主要为大家介绍了Maven项目引用第三方jar包找不到类ClassNotFoundException解决及原因分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • java实现CSV文件导入与导出功能

    java实现CSV文件导入与导出功能

    这篇文章主要为大家详细介绍了java实现CSV文件导入与导出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Spring Boot集成Thymeleaf模板引擎的完整步骤

    Spring Boot集成Thymeleaf模板引擎的完整步骤

    这篇文章主要给大家介绍了关于Spring Boot集成Thymeleaf模板引擎的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • SpringBoot多环境配置及配置文件分类实例详解

    SpringBoot多环境配置及配置文件分类实例详解

    这篇文章主要介绍了SpringBoot多环境配置及配置文件分类,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10

最新评论