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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java遍历Map的方法汇总

    Java遍历Map的方法汇总

    大家平时在使用Java开发时,经常会遇到遍历Map对象的问题,本文就给大家介绍几种Java遍历Map对象的方法,并简单分析一下每种方法的效率,需要的朋友可以参考下
    2023-12-12
  • 图解Java排序算法之希尔排序

    图解Java排序算法之希尔排序

    这篇文章主要为大家详细介绍了Java排序算法之希尔排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java枚举实现自增赋值的方法

    Java枚举实现自增赋值的方法

    在Java编程里,枚举(enum)其实是一种特别的类型,用来表示一组常量,当我们开发程序的时候,常常需要给这些枚举加点其他功能,比如自增赋值的方法,这样就能更方便地管理和使用啦,这篇文章和大家聊聊,怎么在Java中实现枚举的自增赋值
    2025-04-04
  • Java与Mysql锁相关知识总结

    Java与Mysql锁相关知识总结

    这篇文章主要介绍了Java与Mysql锁相关知识总结的相关资料,需要的朋友可以参考下
    2023-04-04
  • java导出pdf文件的详细实现方法

    java导出pdf文件的详细实现方法

    这篇文章主要介绍了java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下
    2025-03-03
  • java如何自定义注解

    java如何自定义注解

    这篇文章主要介绍了java如何自定义注解问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • SpringBoot实现多端口监听的代码示例

    SpringBoot实现多端口监听的代码示例

    当你需要在同一个Spring Boot应用中,通过不同的端口来提供不同的服务或功能时,就需要实现多端口监听,所以本文给大家介绍了SpringBoot实现多端口监听的方法示例,并有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-09-09
  • java synchronized的用法及原理详解

    java synchronized的用法及原理详解

    如果要保证并发情况下多线程共享数据的访问安全,操作的原子性,就可以使用synchronized关键字。这篇文章主要介绍了java synchronized的用法及原理,需要的朋友可以借鉴一下
    2021-08-08
  • Java的CopyOnWriteArrayList操作详解

    Java的CopyOnWriteArrayList操作详解

    这篇文章主要介绍了Java的CopyOnWriteArrayList操作详解,  CopyOnWriteArrayList是ArrayList 的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的,需要的朋友可以参考下
    2023-12-12
  • Swagger实现动态条件注入与全局拦截功能详细流程

    Swagger实现动态条件注入与全局拦截功能详细流程

    这篇文章主要介绍了Swagger实现动态条件注入与全局拦截功能详细流程,Swagger 可以提供 API 操作的测试文档,本文记录 Swagger 使用过程中遇到的小问题
    2023-01-01

最新评论