阅读 53

mybatis+oracle添加数据时如果数据存在就更新,如果不存在就插入


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

insert all

into T_INTERF_XUE_BILL_TLJ
( bill_code, SEND_DATE, PIECE_NUMBER, BILL_WEIGHT,
REGISTER_DATE, REGISTER_MAN, REGISTER_MAN_CODE, REGISTER_SITE, REGISTER_SITE_CODE
)
values
(
#{item.billCode,jdbcType=VARCHAR} ,
#{item.sendDate,jdbcType=DATE} ,
#{item.pieceNumber,jdbcType=NUMERIC} ,
#{item.billWeight,jdbcType=NUMERIC} ,
#{item.registerDate,jdbcType=DATE} ,
#{item.registerMan,jdbcType=VARCHAR} ,
#{item.registerManCode,jdbcType=VARCHAR} ,
#{item.registerSite,jdbcType=VARCHAR},
#{item.registerSiteCode,jdbcType=VARCHAR}
)

select 1 from dual

但是大部分业务是这样的,添加数据时如果数据存在就更新,如果不存在就插入,


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

        merge into T_INTERF_XUE_BILL_TLJ t
        using(
        <foreach collection="list" item="item" index="index" separator="union">
            select
            #{item.billCode,jdbcType=VARCHAR} bill_code ,
            #{item.sendDate,jdbcType=DATE} send_date,
            #{item.pieceNumber,jdbcType=NUMERIC} piece_number ,
            #{item.billWeight,jdbcType=NUMERIC} bill_weight,
            #{item.registerDate,jdbcType=DATE} register_date,
            #{item.registerMan,jdbcType=VARCHAR} register_man,
            #{item.registerManCode,jdbcType=VARCHAR} register_man_code,
            #{item.registerSite,jdbcType=VARCHAR} register_site,
            #{item.registerSiteCode,jdbcType=VARCHAR} register_site_code
            from dual
        foreach>) t1
        on (t.bill_code = t1.bill_code)
        when matched then
        update set
        t.send_date = t1.send_date,
        t.piece_number = t1.piece_number,
        t.bill_weight = t1.bill_weight,
        t.register_date = t1.register_date,
        t.register_man = t1.register_man,
        t.register_man_code = t1.register_man_code,
        t.register_site = t1.register_site,
        t.register_site_code = t1.register_site_code
        when not matched then
        insert
        (bill_code,send_date,piece_number,bill_weight,register_date,register_man,
         register_man_code,register_site,register_site_code)
        values
        (t1.bill_code,t1.send_date,t1.piece_number,t1.bill_weight,t1.register_date,
         t1.register_man,t1.register_man_code,t1.register_site,t1.register_site_code)
    insert>

 上述sql格式如下:

merge into 要修改的表名  别名1

using (select  要修改的字段1,要修改的字段2,  关联的字段 from 表名) 别名2

on (别名1.关联字段 = 别名2. 关联字段)

when matched  then update  set

 别名1.字段 = 别名2.字段

 别名1.字段 = 别名2.字段

 

原文:https://www.cnblogs.com/dragon-lan/p/15177098.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐