mybatis批量插入返回主键失败的坑及解决

 更新时间:2023年11月03日 10:37:20   作者:软件宫城狮  
这篇文章主要介绍了mybatis批量插入返回主键失败的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

批量插入返现没有返回主键 

关键点

foreach里的collection必须是list,不然就会报错。

返回主键的标签

关于返回主键ID,需要在insert标签中添加,useGeneratedKeys=“true” keyProperty=“id”,useGeneratedKeys和keyProperty必须配合使用,keyProperty的字段就是返回的主键ID

mybatis3.3.1及以上的版本,才支持批量插入返回主键ID

mybatis批量新增之主键回写

正常批量新增比较简单 :

写个例子

<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO `x'x'x` (
    `xx`,
    `xxx`
    )
    VALUES
    <foreach collection="list" item="item" separator=",">
        (
        #{item.xx},
        #{item.xxx}
        )
    </foreach>
</insert>

注: useGeneratedKeys=“true” keyProperty=“id” 这个是为了回写id的.

以前基本上没有需要用到回写id的地方,但是今天需要用到了.

但是一开始并没有给我回写主键.

原因就在于我的collection=“这里写的不是list,而是xxList”.

我的mapper里面写的是@param(“xxList”); 多个参数时需要使用这个注解指定.

这样执行是不会报错的.但是id就是不会回写.

再回头, 这里应该是一个映射的概念, 以前应该是想错了.

待我查阅了一些资料之后,我认为,这个collection,应该不是用来指定你在mapper里面传入的什么参数的.

而是指定这个集合的类型是什么? 比如: list,set,map这样的类型.

而当我写成这样时 : collection=“list” @Param(“list”).

id就给我回写了.而当我传入的参数不止一个时,我依旧可以使用@Param进行正常定义.但是是一个对象,一个String,我没有试过传入两个对象的,而且我认为,无论需要什么字段,一个对象就可以搞定,我传入两个参数,只是做一次尝试.如果只是一个对象的话,甚至都不需要用@Param.id也是会回写的.

但是 collection="list"这个是一定要这样写的.不然会报错

要么全部成功,要么全部失败,使用int去接收返回值,会接收到新增的条数的.

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • JDK1.8安装与配置超详细教程

    JDK1.8安装与配置超详细教程

    JDK1.8即为JDK8,JDK8是目前是最成熟最稳定的版本,本文将详细介绍JDK1.8的安装与配置,需要的朋友可以参考下
    2023-03-03
  • Java Swing中的文本区(JTextArea)实现换行保存到文件的几个方法

    Java Swing中的文本区(JTextArea)实现换行保存到文件的几个方法

    这篇文章主要介绍了Java Swing中的文本区(JTextArea)实现换行保存到文件的几个方法,本文给出了4种方法,需要的朋友可以参考下
    2014-10-10
  • 详解java如何解析和生成sql

    详解java如何解析和生成sql

    JSQLParser 是一个开源的 Java 库,用于解析 SQL 语句并将其转换为抽象语法树,下面我们就来看看java是如何使用JSQLParser解析和生成sql的吧
    2024-12-12
  • IDEA中java断言assert语法及使用

    IDEA中java断言assert语法及使用

    这篇文章主要介绍了IDEA中java断言assert语法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • java项目中常用指标UV PV QPS TPS含义以及统计方法

    java项目中常用指标UV PV QPS TPS含义以及统计方法

    文章介绍了现代Web应用中性能监控和分析的重要性,涵盖了UV、PV、QPS、TPS等关键指标的统计方法,并提供了示例代码,同时,文章还讨论了性能优化和瓶颈分析的策略,以及使用Grafana等可视化工具进行监控与告警的重要性
    2025-01-01
  • Java日常练习题,每天进步一点点(49)

    Java日常练习题,每天进步一点点(49)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08
  • Java中的对象和引用详解

    Java中的对象和引用详解

    这篇文章主要介绍了Java中的对象和引用详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java基于iText7实现PDF添加通用文本水印的示例详解

    Java基于iText7实现PDF添加通用文本水印的示例详解

    这篇文章主要为大家详细介绍了Java基于iText7实现PDF添加通用文本水印的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-02-02
  • JPA配置详解之jpaProperties用法

    JPA配置详解之jpaProperties用法

    这篇文章主要介绍了JPA配置详解之jpaProperties用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java 断言 assert的用法详解

    Java 断言 assert的用法详解

    Java assert断言机制是Java5中推出的新特性,它主要用于在程序运行时检查状态或假设的正确性,本篇文章将全面详细地讲解Java assert断言机制,包括断言概述、语法规则、工作原理、使用场景、注意事项以及示例代码等方面,需要的朋友可以参考下
    2023-05-05

最新评论