Mybatis动态拼接sql提高插入速度实例

 更新时间:2023年09月09日 08:31:24   作者:沐雨金鳞  
这篇文章主要介绍了Mybatis动态拼接sql提高插入速度实例,当数据量少的时候,没问题,有效时间内可能完成插入,但是当数据量达到一定程度的时候,每次都一个sql插入超时,所以采用了拼接sql的方式加快速度,需要的朋友可以参考下

Mybatis动态拼接sql提高插入速度

实验室的项目,Excel文件的数据入库,原始录入语句如下:

void insertCaculatePlanData(@Param("excelName") String excelName,
                         @Param("CaculatePlanColumnName") List<String>CaculatePlanColumnName,
                         @Param("InsertIntoCaculatePlanData")List<Object> InsertIntoCaculatePlanData);
  <insert id="insertCaculatePlanData">
        insert into ${excelName} (
        <foreach item="item" collection="CaculatePlanColumnName" separator=",">
            ${item}
        </foreach>
        ) values (
        <foreach item="it" collection="InsertIntoCaculatePlanData"  separator=",">
            #{it}
        </foreach>
        )
  </insert>

其中,表名是参数、列名是参数、列值是参数,每来一行数据,就执行插入一行的数据。

当数据量少的时候,没问题,有效时间内可能完成插入,但是当数据量达到一定程度的时候,每次都一个sql插入,超时。

所以采用了拼接sql的方式加快速度:

void insertCaculatePlanDataBetter(@Param("excelName") String excelName,
                                @Param("CaculatePlanColumnName") List<String>CaculatePlanColumnName,
                                @Param("InsertIntoCaculatePlanData")List<List<Object>> InsertIntoCaculatePlanData);
    <!--优化的拼接插入语句-->
    <insert id="insertCaculatePlanDataBetter">
        INSERT INTO ${excelName}(
        <foreach item="item" collection="CaculatePlanColumnName" separator=",">
            ${item}
        </foreach>
        )
        VALUES
        <foreach item="o" collection="InsertIntoCaculatePlanData" separator=",">(
            <foreach item="itm" collection="o" separator=",">
                #{itm}
            </foreach>
            )
        </foreach>
    </insert>

到此这篇关于Mybatis动态拼接sql提高插入速度实例的文章就介绍到这了,更多相关Mybatis动态sql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用3个实例从原理到实战讲清楚Log4j史诗级漏洞

    用3个实例从原理到实战讲清楚Log4j史诗级漏洞

    最近应该很多人都在关注着一个漏洞Apache Log4j 2远程代码执行,该漏洞一旦被攻击者利用会造成严重危害,这篇文章主要给大家介绍了关于如何用3个实例从原理到实战讲清楚Log4j史诗级漏洞的相关资料,需要的朋友可以参考下
    2021-12-12
  • mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    这篇文章主要介绍了mybatis执行批量更新batch update 的方法,提供oracle和mysql两种方法,非常不错,需要的朋友参考下
    2017-01-01
  • Mybatis敏感数据加解密插件实现过程

    Mybatis敏感数据加解密插件实现过程

    本文介绍了基于MyBatis的敏感数据全链路安全处理方案,包括插件开发原理、具体实现代码以及数据库函数集成,通过MyBatis插件实现自动加解密,结合注解和拦截器技术,确保数据在数据库操作的各个环节中的安全性
    2026-01-01
  • Sentinel Gateway自定义限流返回结果方式

    Sentinel Gateway自定义限流返回结果方式

    这篇文章主要介绍了Sentinel Gateway自定义限流返回结果方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • SpringBoot项目启动报错踩坑实战记录

    SpringBoot项目启动报错踩坑实战记录

    这篇文章主要给大家介绍了关于SpringBoot项目启动报错踩坑的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • 加快springboot项目的服务启动时间的操作方法

    加快springboot项目的服务启动时间的操作方法

    这篇文章给大家介绍如何加快springboot项目的服务启动时间,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-05-05
  • SpringBoot+MyBatis实现动态字段更新的三种方法

    SpringBoot+MyBatis实现动态字段更新的三种方法

    字段更新是指在数据库表中修改特定列的值的操作,这种操作可以通过多种方式进行,具体取决于业务需求和技术环境,本文给大家介绍了在Spring Boot和MyBatis中,实现动态更新不固定字段的三种方法,需要的朋友可以参考下
    2025-04-04
  • Java Spring详解如何配置数据源注解开发以及整合Junit

    Java Spring详解如何配置数据源注解开发以及整合Junit

    Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力,本篇文章带你了解如何配置数据源、注解开发以及整合Junit
    2021-10-10
  • 通过面试题解析 Java 类加载机制

    通过面试题解析 Java 类加载机制

    类加载是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。下面小编和大家来一起学习一下吧
    2019-05-05
  • SpringBoot实现Thymeleaf验证码生成

    SpringBoot实现Thymeleaf验证码生成

    本文使用SpringBoot实现Thymeleaf验证码生成,使用后台返回验证码图片,验证码存到session中后端实现校验,前端只展示验证码图片。感兴趣的可以了解下
    2021-05-05

最新评论