博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis中批量操作
阅读量:5081 次
发布时间:2019-06-12

本文共 2494 字,大约阅读时间需要 8 分钟。

MyBatis中批量插入  

方法一:

<insert id="insertbatch" parameterType="java.util.List">

  <selectKey keyProperty="fetchTime" order="BEFORE"

  resultType="java.lang.String">

  SELECT CURRENT_TIMESTAMP()

  </selectKey>

  insert into kangaiduoyaodian ( depart1, depart2, product_name,

  generic_name, img, product_specification, unit,

  approval_certificate, manufacturer, marketPrice, vipPrice,

  website, fetch_time, productdesc ) values

  <foreach collection="list" item="item" index="index"

  separator=",">

  ( #{item.depart1}, #{item.depart2}, #{item.productName},

  #{item.genericName}, #{item.img},

  #{item.productSpecification}, #{item.unit},

  #{item.approvalCertificate}, #{item.manufacturer},

  #{item.marketprice}, #{item.vipprice}, #{item.website},

  #{fetchTime}, #{item.productdesc} )

  </foreach>

  </insert>

方法二:

<insert id="batchInsertB2B" parameterType="ArrayList">

insert into xxxxtable(hkgs,hkgsjsda,office,asdf,ddd,ffff,supfullName,classtype,agent_type,remark)
<foreach collection="list" item="item" index="index" separator="union all">
select #{item.hkgs,jdbcType=VARCHAR},
#{item.hkgsjsda,jdbcType=VARCHAR},
#{item.office,jdbcType=VARCHAR},
#{item.asdf,jdbcType=VARCHAR},
#{item.ddd,jdbcType=VARCHAR},
#{item.ffff,jdbcType=VARCHAR},
#{item.supfullName,jdbcType=VARCHAR},0,0,
#{item.remark,jdbcType=VARCHAR} from dual
</foreach>
</insert>

 

可以考虑用union all来实现批量插入。

例如:
insert into XX_TABLE(XX,XX,XX)select 'xx','xx','xx' union all select 'xx','xx','xx' union all select 'xx','xx','xx' ...
先拼装好语句再动态传入insert into XX_TABLE(XX,XX,XX)后面部分

 

MyBatis中批量删除

 

 

<!-- 通过主键集合批量删除记录 -->

 

<delete id="batchRemoveUserByPks" parameterType="java.util.List">

 

DELETE FROM LD_USER WHERE ID in 

 

<foreach item="item" index="index" collection="list" open="(" separator="," close=")">

 

#{item}

 

</foreach>

 

</delete>

 

 

 

 

 

MyBatis中in子句

 

1.只有一个参数

 

参数的类型要声明为List或Array

 

Sql配置如下:

 

<select id="selectProduct" resultMap="Map">

 

SELECT *

 

FROM PRODUCT

 

WHERE PRODUCTNO IN

 

     <foreach item="productNo" index="index" collection="参数的类型List或array">

 

            #{productNo}

 

    </foreach>

 

</select>

 

2.多个参数

 

首先要将多个参数写入同一个map,将map作为一个参数传入mapper

 

Sql配置如下:

 

<select id="selectProduct" resultMap="Map">

 

SELECT *

 

FROM PRODUCT

 

WHERE PRODUCTNO IN

 

     <foreach item="productNo" index="index" collection="map中集合参数的名称">

 

            #{productNo}

 

    </foreach>

 

</select>

 

 MyBatis批量修改

 

 

 

 <update id="updateOrders" parameterType="java.util.List">

 update orders set state = '0' where no in
 <foreach collection="list" item="nos" open="(" separator="," close=")">
   #{nos}
 </foreach>
 </update>

 

转载于:https://www.cnblogs.com/zdoworld/p/7471616.html

你可能感兴趣的文章
打印问题
查看>>
【原创】oracle的tpc-c测试及方法
查看>>
FZU 1922——非主流——————【技巧题】
查看>>
CentOS6 root 用户 vi/vim 无法开启高亮
查看>>
3.3 实模式
查看>>
3.资源里加个混淆
查看>>
策略模式
查看>>
JVM调优实战(一)
查看>>
(笔记)Ubuntu下安装arm-linux-gcc-4.4.3.tar.gz (交叉编译环境)
查看>>
网络基础与断点续传
查看>>
制作简单图片验证码
查看>>
Arcgis Desktop 10.4安装总结
查看>>
关于Android程序设计—有道词典demo转移至coding的公告
查看>>
C#.Net C/S快速开发框架V2.2版本介绍
查看>>
【zabbix监控Windows之性能监视器的介绍】
查看>>
常用SQL语句
查看>>
Scala first trial
查看>>
全局变量和全局静态变量
查看>>
滚动广告效果
查看>>
树莓派+12864液晶视频播放实验
查看>>