MyBatis_结合Spring_Oracle批量插入

DAO:YQDaoImpl

@Override
	public int insertYQinfo2DB(List<YQBean> list) {
		return insert("YQDao.insertYQinfo2DB",list);
	}

YQMapper.xml 
<insert id="insertYQinfo2DB" parameterType="java.util.List" useGeneratedKeys="false">
      INSERT INTO 
      	yq_info
  		(id, title, url, source, time, type, create_time)
	  (SELECT A.*
		  FROM(
			<foreach collection="list" item="item" index="index" separator="UNION ALL">
			 SELECT 
			       #{item.id, jdbcType=VARCHAR} id,
			       #{item.title, jdbcType=VARCHAR} title,
			       #{item.url, jdbcType=VARCHAR} url,
			       #{item.source, jdbcType=VARCHAR} source,
			       #{item.time, jdbcType=VARCHAR} time,
			       #{item.type, jdbcType=VARCHAR} type,
			       #{item.time, jdbcType=VARCHAR} create_time
			     FROM dual
			 </foreach>
			 ) A)
</insert>

以上为Oracle的写法,需要注意的是如果不使用Oracle的序列,需要明文指定 useGeneratedKeys="false"。

如果使用Oracle的序列xml需要写成:

<insert id="insertYQinfo2DB" parameterType="java.util.List">
      INSERT INTO 
      	yq_info
  		(id, title, url, source, time, type, create_time)
	  (SELECT YQ_INFO.SEQ.NEXTVAL, A.*
		  FROM(
			<foreach collection="list" item="item" index="index" separator="UNION ALL">
			 SELECT 
			       #{item.title, jdbcType=VARCHAR} title,
			       #{item.url, jdbcType=VARCHAR} url,
			       #{item.source, jdbcType=VARCHAR} source,
			       #{item.time, jdbcType=VARCHAR} time,
			       #{item.type, jdbcType=VARCHAR} type,
			       #{item.time, jdbcType=VARCHAR} create_time
			     FROM dual
			 </foreach>
			 ) A)
</insert>

补充:如若使用Mysql:

<insert id="insertYQinfo2DB" parameterType="java.util.List">  
    INSERT INTO 
    	yq_info(
	    	id,
	    	title,
	    	url,
	    	source,
	    	time,
	    	type,
	    	create_time)
	VALUES
		<foreach collection="list" item="item" index="index" separator="," >  
        	(#{item.id},#{item.title},#{item.url},#{item.source},#{item.time},#{item.type},#{item.time})  
        </foreach>
</insert>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值