使用mybatis新增一条数据返回新增数据的id

这篇具有很好参考价值的文章主要介绍了使用mybatis新增一条数据返回新增数据的id。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一种方法

<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.icc.domain.User">
    insert into user(userName,password)
    values(#{userName},#{password})
</insert>

注意事项:

useGeneratedKeys="true" 表示给主键设置自增长,keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段。

parameterType="com.icc.domain.User" 这个属性指向传递的参数实体类

这里提醒下,<insert></insert> 中没有resultType属性,不要乱加。

实体类中uerId 要有getter() and setter(); 方法

第二种方式:

    <insert id="insertProduct" parameterType="com.icc.domain.ProductBean" >
       <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="productId">
          SELECT LAST_INSERT_ID()
      </selectKey>
        INSERT INTO t_product(productName,productDesrcible,merchantId)values(#{productName},#{productDesrcible},#{merchantId});

注意事项:

<insert></insert> 中没有resultType属性,但是<selectKey></selectKey> 标签是有的。

order="AFTER" 表示先执行插入语句,之后再执行查询语句。

可被设置为 BEFORE 或 AFTER。

如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 它会在插入语句前执行。

如果设置为 AFTER,那么插入语句执行后执行。

keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段。

SELECT LAST_INSERT_ID() 表示MySQL语法中查询出刚刚插入的记录自增长Id.

实体类中uerId 要有getter() and setter(); 方法

取出方式

Mybatis 执行完插入语句后,自动将自增长值赋值给对象 ProductBean 的属性id。因此,可通过 systemBean 对应的 getter 方法获取!

int count = systemService.insert(productBean);    
        
int id = productBean.getproductId(); //获取到的即为新插入记录的ID 

如果是使用如下序列.nextval来设置id则可以直接通过实体类的get方法获取文章来源地址https://www.toymoban.com/news/detail-633141.html

<insert id="insertDept" parameterType="SysDept">
        <selectKey keyProperty="deptId" order="BEFORE" resultType="Long">
            select seq_sys_dept.nextval as deptId from DUAL
        </selectKey>
         insert into sys_dept(
             <if test="deptId != null and deptId != 0">dept_id,</if>
             <if test="deptName != null and deptName != ''">dept_name,</if>
             <if test="leader != null and leader != ''">leader</if>
          
         )values(
             <if test="deptId != null and deptId != 0">#{deptId},</if>
             <if test="deptName != null and deptName != ''">#{deptName},</if>
             <if test="leader != null and leader != ''">#{leader}</if>
        
         )
    </insert>
deptMapper.insertDept(dept);
        System.out.println("==============================="+dept.getDeptId());

到了这里,关于使用mybatis新增一条数据返回新增数据的id的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5.4 如何在Mybatis中使用insert标签并返回主键id?-- 教你通用做法

    通过 《上文》,我们学会了XML映射文件Mapper的创建,以及最常用的select标签和resultMap标签,本文主要讲解 insert标签 ,用于和insert SQL语句映射,非常简单上手,只有两个点可以扩展讲讲:一个点是 insert后返回主键id(会介绍两种方式) ,另外一个点是 实现批量添加 ,原本打算

    2024年02月06日
    浏览(41)
  • mybatis插入后返回主键id的三种方式

    第一种:在xml文件,insert标签属性中,添加useGeneratedKeys和keyProperty,如图   第二种:在xml文件,添加selectKey标签属性,各个属性值含义:resultType:查询结果的类型;keyProperty:把查询的值赋给谁;order:在插入前还是后执行,id在insert语句插入之后才会生成id,所以要在插入之

    2024年02月15日
    浏览(43)
  • mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续

    引言: 在使用MySQL数据库时,有时候我们需要删除某些记录,但是删除记录后可能会导致表中的id不再连续排序。 如何实现删除记录后让id重新排序的功能。 如图: 删除数据后,中间的id不会自动连续。 下面有两种方法进行重新排序: 方法一: 删除表中id,重新添加id字段:

    2024年02月20日
    浏览(42)
  • vmware 使用scsi_id 获取ID返回空

    /usr/lib/udev/scsi_id -g -u -d --whitelisted --replace-whitespace --device=/dev/sdb2 结果返回是空的,根本的原因是 虚拟机的设置问题。 修改虚拟机的配置文件,vmx后缀的那个:例如 CentOS 7 64 位.vmx 重启虚拟机,再次执行,就有结果了 /usr/lib/udev/scsi_id -g -u -d --whitelisted --replace-whitespace --device

    2024年02月04日
    浏览(35)
  • Mybatis使用insert插入后获取id值

    在mapper中定义insert方法: 属性 useGeneratedKeys:设置为true,否则无法获取到主键id。 keyProperty:实体类对象的主键id属性名称。 keyColumn:数据库中主键id字段名称。 调用orderMapper.insertOrder(record)执行插入语句,返回值是一个int类型,如果成功返回的是1,失败返回的是exception。 插

    2024年02月16日
    浏览(43)
  • spring boot集成mybatis-plus——Mybatis Plus 批量 Insert_新增数据(图文讲解)

     更新时间 2023-01-10 16:02:58 大家好,我是小哈。 本小节中,我们将学习如何通过 Mybatis Plus 实现 MySQL 批量插入数据。 先抛出一个问题:假设老板给你下了个任务,向数据库中添加 100 万条数据,并且不能耗时太久! 通常来说,我们向 MySQL 中新增一条记录,SQL 语句类似如下:

    2024年02月04日
    浏览(46)
  • Mybatis新增数据,存在就更新,不存在就添加,Mysql避免重复插入数据的4种方式

    即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据。 即插入数据时

    2024年02月11日
    浏览(42)
  • 日常BUG——使用Long类型作id,后端返回给前段后精度丢失问题

    😜 作           者 :是江迪呀 ✒️ 本文 : 日常BUG 、 BUG 、 问题分析 ☀️ 每日   一言 : 存在错误说明你在进步! 数据库long类型Id: 前端返回的Id实体类: 前端拿到的Id: 这是因为使用Long类型作id时,前后端交互时数据在网络上传输会导致精度丢失。 在返回给前

    2024年02月13日
    浏览(40)
  • 访问elasticsearch集群提示ERROR 新增es数据失败,后台日志返回413 Request Entity Too Larg

    在运维paas云平台时有研发反馈客户端访问elasticsearch服务偶发性的出现报错,提示报错如下: 报错日志内容核心点如下: 根据日志报错内容及研发反馈的信息得到如下有用信息: 1、连接elasticsearch服务并请求处理业务是偶发性的提示报错,也就是说明elasticsearch服务是正常的

    2024年04月17日
    浏览(47)
  • Mybatis分页查询同时返回总数和数据

    我们在使用Mybatis分页查询数据列表时,在用户的一个请求中常常需要同时返回当前页的列表数据以及满足条件的数据总条数用于分页。 1)执行两次SQL,一次查列表,一次查总数       这种方法最简单,也最容易实现。 2)分页插件PageHelper       另一种常用的方式就是使用

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包