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

