首页 > 其他 > 详细

mybatis使用foreach处理批量插入,in条件查询

时间:2021-04-30 21:04:45      阅读:18      评论:0      收藏:0      [点我收藏+]

有时候在操作数据库时,会进行一些批量操作,例如批量插入,in条件查询等,这时可以利用mybatis的动态sql,foreach元素进行批量操作,相对于在代码里面进行for循环批量操作数据库效率较高,以前用过很多次,现在特此记录一下,下次直接复制修改一下相关信息即可。

第一种情况:in条件查询

    select a.* from pcn.n_lat_trans_detail a ,pcn.n_lat_loan_rsp b
    where a.tran_status=‘3‘ and a.transaction_id=b.transation_id
    and b.rsp_sts=‘0000‘ and b.rsp_msg=‘succ‘
    and date_format(b.create_time,‘%Y%m%d‘)  in
    <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
      #{item}
    </foreach>

第二种情况:批量插入

  <insert id="batchInsert" parameterType="java.util.List">
        insert into doku_repay_rclerr_detail (id, out_transidmerchant, in_transidmerchant,
        rcl_task_id, chk_status, diff_reason,
        amount, pay_out_date, ext_field1,
        remark, create_date, update_date
        )
        VALUES
        <foreach collection="list" item="item" index="index" separator=",">
            (
            #{item.id,jdbcType=INTEGER},
            #{item.outTransidmerchant,jdbcType=VARCHAR},
            #{item.inTransidmerchant,jdbcType=VARCHAR},
            #{item.rclTaskId,jdbcType=VARCHAR},
            #{item.chkStatus,jdbcType=VARCHAR},
            #{item.diffReason,jdbcType=VARCHAR},
            #{item.amount,jdbcType=DECIMAL},
            #{item.payOutDate,jdbcType=VARCHAR},
            #{item.extField1,jdbcType=VARCHAR},
            #{item.remark,jdbcType=VARCHAR},
            #{item.createDate,jdbcType=TIMESTAMP},
            #{item.updateDate,jdbcType=TIMESTAMP}
            )
        </foreach>
    </insert>

其他动态sql元素参见:https://www.cnblogs.com/jasonboren/p/11394721.html

mybatis使用foreach处理批量插入,in条件查询

原文:https://www.cnblogs.com/jasonboren/p/14722953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!