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.

总结

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

相关文章

  • JGroups实现聊天小程序

    JGroups实现聊天小程序

    这篇文章主要为大家详细介绍了JGroups实现聊天小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 关于String转Json的几种方式

    关于String转Json的几种方式

    这篇文章主要介绍了关于String转Json的几种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Mybatis Mapper接口工作原理实例解析

    Mybatis Mapper接口工作原理实例解析

    这篇文章主要介绍了Mybatis Mapper接口工作原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Springboot集成SpringState状态机的实现

    Springboot集成SpringState状态机的实现

    本文主要介绍了Springboot集成SpringState状态机的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • 关于SpringGateway调用服务 接受不到参数问题

    关于SpringGateway调用服务 接受不到参数问题

    这篇文章主要介绍了关于SpringGateway调用服务接受不到参数问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • SpringBoot项目nohup启动运行日志过大的解决方案

    SpringBoot项目nohup启动运行日志过大的解决方案

    这篇文章主要介绍了SpringBoot项目nohup启动运行日志过大的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • java设计模式责任链模式原理案例详解

    java设计模式责任链模式原理案例详解

    一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现
    2021-09-09
  • 基于Java和GeoTools的Shapefile矢量数据缩略图生成实践

    基于Java和GeoTools的Shapefile矢量数据缩略图生成实践

    这篇文章主要介绍了基于Java和GeoTools的Shapefile矢量数据缩略图生成实践,需要的朋友可以参考下
    2024-08-08
  • Java如何求交集、并集、差集

    Java如何求交集、并集、差集

    这篇文章主要介绍了Java如何求交集、并集、差集问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Springboot使用Redis中ZSetOperations实现博客访问量

    Springboot使用Redis中ZSetOperations实现博客访问量

    在日常的网站使用中,经常会碰到页面的访问量,本文主要介绍了Springboot使用Redis中ZSetOperations实现博客访问量,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论