java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis动态sql

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

作者:沐雨金鳞

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

您可能感兴趣的文章:
阅读全文