学习记录-Mybatis批量插入MySQL和Oracle

一、问题描述

以Springboot开发微服务应用中,通过Mybatis批量插入数据到数据库中,包括MySQL和Oracle两种。

二、解决方法

1.MySQL

在Mapper中接口方法如下:

void addInfo(List<PersonInfo> info);

在XML文件添加内容如下:

<insert  id="addInfo" parameterType="java.util.List" useGeneratedKeys="false">
    insert   into personinfo (id,name,info)  values
        <foreach collection="list" item="info" separator=",">
		    (#{info.id}, #{info.name}, #{info.info})
	    </foreach>
 </insert >

对collection的属性:

1. 若传入的为单参数且参数类型是一个List的时候,collection属性值为list;
2. 若传入的为单参数且参数类型是一个array数组的时候,collection的属性值为array;
3. 若传入的参数为多个的时候,需要把它们封装成一个Map,也可为单参数。

item:表示集合中每一个元素进行迭代时的别名,
index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open:表示该语句以什么开始,
separator:表示在每次进行迭代之间以什么符号作为分隔 符,
close:表示以什么结束。
2.Oracle

在Oracle中的语句和MySQL的略有区别,记录如下:

void insertId(@Param("infolist")List<BasicResource> res);

在XML文件中配置如下:

 <insert id="insertId"  parameterType="java.util.List" useGeneratedKeys="false">
     	INSERT INTO COM_RES_MAP (FUNC_ID,MODULE_ID,APPLICATION_ID) 
		<foreach  item="res" index="index" collection="infolist" separator="union all">
		(
			SELECT	#{res.funcId}, #{res.modId},#{res.appId} FROM DUAL
		)
		</foreach>
 </insert> 

*注意:此处插入语句中没有Values,foreach中的语句,collection的值等都与MYSQL的有区别。

参考文献:

Mybatis中文手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值