Mybatis動態(tài)拼接sql提高插入速度實例
Mybatis動態(tài)拼接sql提高插入速度
實驗室的項目,Excel文件的數(shù)據(jù)入庫,原始錄入語句如下:
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>其中,表名是參數(shù)、列名是參數(shù)、列值是參數(shù),每來一行數(shù)據(jù),就執(zhí)行插入一行的數(shù)據(jù)。
當數(shù)據(jù)量少的時候,沒問題,有效時間內(nèi)可能完成插入,但是當數(shù)據(jù)量達到一定程度的時候,每次都一個sql插入,超時。
所以采用了拼接sql的方式加快速度:
void insertCaculatePlanDataBetter(@Param("excelName") String excelName,
@Param("CaculatePlanColumnName") List<String>CaculatePlanColumnName,
@Param("InsertIntoCaculatePlanData")List<List<Object>> InsertIntoCaculatePlanData); <!--優(yōu)化的拼接插入語句-->
<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>到此這篇關(guān)于Mybatis動態(tài)拼接sql提高插入速度實例的文章就介紹到這了,更多相關(guān)Mybatis動態(tài)sql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用3個實例從原理到實戰(zhàn)講清楚Log4j史詩級漏洞
最近應(yīng)該很多人都在關(guān)注著一個漏洞Apache Log4j 2遠程代碼執(zhí)行,該漏洞一旦被攻擊者利用會造成嚴重危害,這篇文章主要給大家介紹了關(guān)于如何用3個實例從原理到實戰(zhàn)講清楚Log4j史詩級漏洞的相關(guān)資料,需要的朋友可以參考下2021-12-12
mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)
這篇文章主要介紹了mybatis執(zhí)行批量更新batch update 的方法,提供oracle和mysql兩種方法,非常不錯,需要的朋友參考下2017-01-01
Mybatis敏感數(shù)據(jù)加解密插件實現(xiàn)過程
本文介紹了基于MyBatis的敏感數(shù)據(jù)全鏈路安全處理方案,包括插件開發(fā)原理、具體實現(xiàn)代碼以及數(shù)據(jù)庫函數(shù)集成,通過MyBatis插件實現(xiàn)自動加解密,結(jié)合注解和攔截器技術(shù),確保數(shù)據(jù)在數(shù)據(jù)庫操作的各個環(huán)節(jié)中的安全性2026-01-01
Sentinel?Gateway自定義限流返回結(jié)果方式
這篇文章主要介紹了Sentinel?Gateway自定義限流返回結(jié)果方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
加快springboot項目的服務(wù)啟動時間的操作方法
這篇文章給大家介紹如何加快springboot項目的服務(wù)啟動時間,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-05-05
SpringBoot+MyBatis實現(xiàn)動態(tài)字段更新的三種方法
字段更新是指在數(shù)據(jù)庫表中修改特定列的值的操作,這種操作可以通過多種方式進行,具體取決于業(yè)務(wù)需求和技術(shù)環(huán)境,本文給大家介紹了在Spring Boot和MyBatis中,實現(xiàn)動態(tài)更新不固定字段的三種方法,需要的朋友可以參考下2025-04-04
Java Spring詳解如何配置數(shù)據(jù)源注解開發(fā)以及整合Junit
Spring 是目前主流的 Java Web 開發(fā)框架,是 Java 世界最為成功的框架。該框架是一個輕量級的開源框架,具有很高的凝聚力和吸引力,本篇文章帶你了解如何配置數(shù)據(jù)源、注解開發(fā)以及整合Junit2021-10-10
SpringBoot實現(xiàn)Thymeleaf驗證碼生成
本文使用SpringBoot實現(xiàn)Thymeleaf驗證碼生成,使用后臺返回驗證碼圖片,驗證碼存到session中后端實現(xiàn)校驗,前端只展示驗證碼圖片。感興趣的可以了解下2021-05-05

