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

目录
  • 1、自增主键情况下插入数据获取自增主键值
  • 2、主键非自增的情况下获取主键值
  • 3、keyColumn作用
  • 总结

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值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mybatis执行插入语句后并返回主键ID问题

    目录 1.MySQL数据库设置ID自增情况 2.使用UUID自增主键 3.mybatis-plus在执行插入语句后返回自定义ID 总结 我们知道JDBC可以实现插入语句后返回主键Id,那mybatis可以实现吗? 答案是肯定的. 1.MySQL数据库设置ID自增情况 <insert id="insertUser" parameterType="com.crush.mybatisplus.entity.User"> INSERT INTO tb_user

  • Mybatis-plus出现数据库id很大或者为负数的解决

    目录 问题复原 原因 如何解决 小结 问题复原 原因 数据库设置了自增主键 但是代码没有设置TableId 然后在新增的时候就出现了id很大或者负数. 如何解决 代码设置TableId @TableId(value = "id", type = IdType.AUTO) private Integer id; 设置数据库连接 重启后台 把这个改成正常的数字,删除原来的数据,然后设置成1,或者改成目前最大的一个数字,比如正常的是最大为2,现在设置成3. 然后就数据库就正常了! 小结 以上

  • Mybatis-plus插入后返回元素id的问题

    目录 mybatis-plus插入后返回插入元素的id 1.mybatis原生 2.使用mybatis-plus注解 3.使用mybatis-plus提供的insert Mybatis-plus设置id自增,插入数据 没修改前 所以修改后 总结 mybatis-plus插入后返回插入元素的id 有三种方法,第三种最简单. 不想麻烦的直接看第三种 1.mybatis原生 mybaits-plus要使用mybatis原生需要一下配置,指定下mapper文件的位置就好 mybatis-plus:  

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

    目录 1.自增主键情况下插入数据获取自增主键值 2.主键非自增的情况下获取主键值 3.keyColumn作用 总结 1.自增主键情况下插入数据获取自增主键值 mybatis为我们提供了一个方法,能够插入数据时获取自动生成的值,并且把取的值赋值给实体类的某一属性 设置方法: 要求:主键必须是自增的 <insert id = "insert" useGeneratedKeys = "true" keyProperty = "id">  

  • Mybatis selectKey 如何返回新增用户的id值

    目录 Mybatis selectKey返回新增用户的id值 一.需求:新增用户后,同时还要返回当前新增用户的id值 二.为什么要使用selectKey? 三.属性解析 Mybatis selectKey 采坑笔记 一.现象描述 二.问题排查 三.selectKey 用法再认识 四.selectKey用法的坑 Mybatis selectKey返回新增用户的id值 一.需求:新增用户后,同时还要返回当前新增用户的id值 id是由数据库的自动增长来实现的,所以就相当于我们要在新增后将自动增长aut

  • Mysql使用insert插入多条记录 批量新增数据

    如果要向table1中插入5条记录,下面写法是错误的: INSERT INTO table1 (id,name) VALUES(1,小明,2,小强,3,小杜,4,小李,5,小白); MySQL将会抛出下面的错误 ERROR 1136: Column count doesn't match value count at row 1 而正确的写法应该是这样: INSERT INTO t able1(i,name) VALUES(1,'小明'),(2,'小强'),(3,'小杜'),(4,'小李'),(

  • 在MsSql、Access两种数据库中插入记录后马上得到自动编号的ID值

    本编文章将要介绍重点解释如何在Ms Sql Server中更新或添加一条记录后立即得到其标识列的值,这个值在ACCESS就是我们熟知的自动编号的 ID值,好了,闲话不多说,代码我也不多写,只写关键些,相信各位高手一看就明白,呵呵.后面也附带了在ACCESS中获取的方法,虽然在ACCESS 中获取自动编号的文章网上虽然很多,但放在此做为一个总结吧. Set testRs=Server.CreateObject("ADODB.RecordSet") '创建要测试的对象 testRs.Ope

  • mybatis学习之路mysql批量新增数据的方法

    接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到. mysql新增语句 insert into 表名(字段,字段...) values ( 值,值 ...):此种适合单条插入. 批量插入,一种可以在代码中循环着执行上面的语句,但是这种效率太差,下面会有对比,看看它有多差. 另一种,可以用mysql支持的批量插入语句, insert into 表名(字段,字段...) values ( 值,值 ...),( 值,值 ...),( 值,值 ...).... 这种方式相比起来,

  • 详解mybatis插入数据后返回自增主键ID的问题

    1.场景介绍: ​开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数,那么这个时候我们想要得到相应的这条新增数据的ID,该怎么办呢? 2.插入数据返回自增主键ID方法(一) 在映射器中配置获取记录主键值xml映射: 在xml中定义useGeneratedKeys为true,返回主键id的值,keyProperty和keyColumn分别代表数据库

  • Mybatis实现插入数据后返回主键过程解析

    添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景. 除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值,MyBatis从3.3.1版本开始支持批量添加记录并返回各记录主键字段值. 一.获取新添加记录主键字段值 注意: 在MyBatis中添加操作返回的是记录数并非记录主键id. 如果需要获取新添加记录的主键值,需要在执行添加操作之后,直接读取Java对象的主键属性. Integer rows = sqlSession.getMapp

  • jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用. 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuery通过Ajax向PHP服务端发送请求并返回JSON数据.阅读本文的读者应该具备jQuery.Ajax.PHP相关知识,并能熟练运用. XHTML <ul id="use

  • jQuery通过Ajax返回JSON数据

    服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuery通过Ajax向PHP服务端发送请求并返回JSON数据. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用.请接着往下看教程. <ul id="userlist"> <li><a hre

随机推荐