Mybatis如何一次性插入多條數(shù)據(jù)
Mybatis一次性插入多條數(shù)據(jù)
使用Mybatis的Mapper.xml里面的<foreach>標(biāo)簽進(jìn)行循環(huán)插入
這種方法相對于controller層的for循環(huán)一條條的插入
不論是效率還是數(shù)據(jù)庫消耗都較之于后一種又很大提升
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <insert id="insertIntoUsers" parameterType="java.util.ArrayList"> insert into `user`(uPassword,uName,uIDCard,uPhone,uEmail,uStatus) values <foreach collection="list" index="index" separator="," item="item"> (#{item.uPassword},#{item.uName},#{item.uIDCard},#{item.uPhone},#{item.uEmail},#{item.uStatus}) </foreach> </insert> </mapper>
解釋
collerction
:表示需要遍歷的類型基本上只有:list,array,Map這三中寫法。index
:表示循環(huán)的下標(biāo)。separator
:表示每個對象的分隔符(也是進(jìn)行下一次循環(huán)的標(biāo)識符)。item
:表示當(dāng)前循環(huán)對象。open
:以什么開頭。close
:以什么結(jié)尾。
提示
一般不要寫open,close,不然容易造成嵌套錯誤。
nested exception is java.sql.SQLException: Column count doesn't match value count at row 1
(嵌套異常:sql語句的列計(jì)數(shù)與第1行的值計(jì)數(shù)不相匹配)
特別注意
mysql默認(rèn)接受sql的大小是1048576(1M),List插入數(shù)據(jù)量超過1M會報(bào)如下異常:
(可通過調(diào)整MySQL安裝目錄下的my.ini文件中[mysqld]段的"max_allowed_packet = 1M")
nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5677854 > 1048576).
You can change this value on the server by setting the max_allowed_packet' variable.
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談springboot @Repository與@Mapper的區(qū)別
本文主要介紹了淺談springboot @Repository與@Mapper的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Java導(dǎo)出多個excel表打包到zip文件中供客戶端另存為窗口下載實(shí)現(xiàn)方法
最近的項(xiàng)目有一個導(dǎo)出匯總數(shù)據(jù)的要求,考慮到用戶軟件的差異,所以要分別導(dǎo)出xls以及xlsx并且打包提供下載,下面這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出多個excel表打包到zip文件中供客戶端另存為窗口下載的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-12-12詳解IDEA多module項(xiàng)目maven依賴的一些說明
這篇文章主要介紹了詳解IDEA多module項(xiàng)目maven依賴的一些說明,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10Idea工具中創(chuàng)建 SpringBoot工程及入門詳解
這篇文章主要介紹了Idea工具中創(chuàng)建 SpringBoot工程及入門分析詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02如何在 Spring Boot 中配置和使用 CSRF 保護(hù)
CSRF是一種網(wǎng)絡(luò)攻擊,它利用已認(rèn)證用戶的身份來執(zhí)行未經(jīng)用戶同意的操作,Spring Boot 提供了內(nèi)置的 CSRF 保護(hù)機(jī)制,可以幫助您防止這種類型的攻擊,這篇文章主要介紹了Spring?Boot?中的?CSRF?保護(hù)配置的使用方法,需要的朋友可以參考下2023-09-09idea報(bào)錯:程序包org.springframework.web.bind.annotation不存在
在用本地的maven倉庫的時候會org.springframework.web.bind.annotation不存在的錯誤,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解下2023-08-08