MyBatis批量插入Oracle、MySQL

要做批量插入数据库,首先得知道该数据库对批量插入所支持的语法。每个数据库批量插入的语法都不一样,

我介绍两种。 

MySQL:1、INSERTINTO TABLE_NAME(ID,NAME)VALUES(1,'张三'),(2,'李四') 

               2、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三');

    INSERT INTOTABLE_NAME(ID,NAME)VALUES(2,'李四') 

 

Oracle:1、INSERTINTO TABLE_NAME (ID,NAME) (SELECT 1,'张三' from dual) union all (SELECT 2,'李四'from dual) 

              2、INSERT INTO TABLE_NAME (ID,NAME) VALUES(1,'张三');

                   INSERT INTOTABLE_NAME(ID,NAME)VALUES(2,'李四') 


4条SQL都是数据库支持的写法。

两者的第二种是不推荐的写法,因为不管效率还是可读性上都远差于第一种 。当然,还有更重要的一点,Mybatis不支持第二种写法,

因为mybatis的一个事务只支持一条SQL 所以,Mybatis里写法只能取两者的第一种,代码如下 :

 

MySQL

Java代码:

<select id="batchSave" parameterType="java.util.List">  

                INSERT INTO TABLE_NAME(ID,NAME) VALUES  

                <foreach collection="list"  item="itm" separator=",">  

                        (#{itm.id},#{itm.name})        

                </foreach>  

        </select> 

ORACLE

 Java代码:

   <select id="batchSave" parameterType="java.util.List">  

                INSERT INTO TABLE_NAME(ID,NAME)   

                <foreach collection="list"  item="itm" separator="union all">  

                        (SELECT #{itm.id},#{itm.name} FROM DUAL)  

                </foreach>  

        </select>  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值