Mybatis如何一次性插入多条数据

 更新时间:2023年11月04日 08:45:40   作者:CCIEJohn_zhou  
这篇文章主要介绍了Mybatis如何一次性插入多条数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Mybatis一次性插入多条数据

使用Mybatis的Mapper.xml里面的<foreach>标签进行循环插入

这种方法相对于controller层的for循环一条条的插入

不论是效率还是数据库消耗都较之于后一种又很大提升

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <insert id="insertIntoUsers" parameterType="java.util.ArrayList">
        insert into `user`(uPassword,uName,uIDCard,uPhone,uEmail,uStatus) values
        <foreach collection="list" index="index" separator="," item="item">
            (#{item.uPassword},#{item.uName},#{item.uIDCard},#{item.uPhone},#{item.uEmail},#{item.uStatus})
        </foreach>
    </insert>
</mapper>

解释

  • collerction:表示需要遍历的类型基本上只有:list,array,Map这三中写法。
  • index:表示循环的下标。
  • separator:表示每个对象的分隔符(也是进行下一次循环的标识符)。
  • item:表示当前循环对象。
  • open:以什么开头。
  • close:以什么结尾。

提示

一般不要写open,close,不然容易造成嵌套错误。

nested exception is java.sql.SQLException: Column count doesn't match value count at row 1 

(嵌套异常:sql语句的列计数与第1行的值计数不相匹配)

特别注意

mysql默认接受sql的大小是1048576(1M),List插入数据量超过1M会报如下异常:

(可通过调整MySQL安装目录下的my.ini文件中[mysqld]段的"max_allowed_packet = 1M")

nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5677854 > 1048576).

You can change this value on the server by setting the max_allowed_packet' variable.

总结

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

相关文章

  • java使用spring实现发送mail的方法

    java使用spring实现发送mail的方法

    这篇文章主要介绍了java使用spring实现发送mail的方法,涉及java基于spring框架发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • SSH框架网上商城项目第7战之整合Struts2和Json

    SSH框架网上商城项目第7战之整合Struts2和Json

    SSH框架网上商城项目第7战之整合Struts2和Json,打通EasyUI和Struts2之间的交互,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • java对图片进行压缩和resize缩放的方法

    java对图片进行压缩和resize缩放的方法

    本篇文章主要介绍了java对图片进行压缩和resize调整的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 解决springboot的JPA在Mysql8新增记录失败的问题

    解决springboot的JPA在Mysql8新增记录失败的问题

    这篇文章主要介绍了解决springboot的JPA在Mysql8新增记录失败的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java 使用IO流实现大文件的分割与合并实例详解

    Java 使用IO流实现大文件的分割与合并实例详解

    这篇文章主要介绍了Java 使用IO流实现大文件的分割与合并实例详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • Json字符串内容比较超实用教程

    Json字符串内容比较超实用教程

    这篇文章主要介绍了Json字符串内容比较-超实用版,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • SpringBoot+OCR实现PDF内容识别的示例代码

    SpringBoot+OCR实现PDF内容识别的示例代码

    在SpringBoot中,您可以结合OCR库来实现对PDF文件内容的识别和提取,本文就来介绍一下如何使用 Tesseract 和 pdf2image 对 PDF 文件进行OCR识别和提取,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Java IO模型之BIO、NIO、AIO三种常见IO模型解析

    Java IO模型之BIO、NIO、AIO三种常见IO模型解析

    这篇文章主要介绍了今天我们来聊Java IO模型,BIO、NIO、AIO三种常见IO模型,我们从应用调用的过程中来分析一下整个IO的执行过程,不过在此之前,我们需要简单的了解一下整个操作系统的空间布局,需要的朋友可以参考下
    2024-07-07
  • java中replaceAll替换圆括号实例代码

    java中replaceAll替换圆括号实例代码

    正则表达式的保留字符主要有:圆括号、方括号、花括号、竖线、横线、点号、加号、星号、反斜杆等等,下面这篇文章主要给大家介绍了关于java中replaceAll替换圆括号的相关资料,需要的朋友可以参考下
    2022-10-10
  • 什么是Java自旋锁

    什么是Java自旋锁

    这篇文章主要介绍了什么是Java自旋锁,在有些场景中,同步资源的锁定时间很短,为了这一小段时间去切换线程,线程挂起和恢复现场的花费可能会让系统得不偿失,下面来了解具体内容介绍吧
    2022-01-01

最新评论