`

mybatis merge 语句使用

 
阅读更多
<update id="saveRechousecode" parameterType="net.hlj.ownership.bean.Rechousecode" >
  	merge into TBWKRECHOUSECODE t
  	using ( select #{fid} as fid from dual) t1
  	on(t.fid = t1.fid)
  	when not matched then
    insert 
    <trim prefix="(" suffix=")" suffixOverrides="," >
        FID,
      <if test="optypenum != null" >
        OPTYPENUM,
      </if>
      <if test="recyear != null" >
        RECYEAR,
      </if>
      <if test="recnum != null" >
        RECNUM,
      </if>
      <if test="housecode != null" >
        HOUSECODE,
      </if>
      <if test="wxjjnum != null" >
        WXJJNUM,
      </if>
      <if test="districtnum != null" >
        DISTRICTNUM,
      </if>
      <if test="streetnum != null" >
        STREETNUM,
      </if>
      <if test="prjnum != null" >
        PRJNUM,
      </if>
      <if test="buildnum != null" >
        BUILDNUM,
      </if>
      <if test="unitnum != null" >
        UNITNUM,
      </if>
      <if test="floornum != null" >
        FLOORNUM,
      </if>
      <if test="doornum != null" >
        DOORNUM,
      </if>
      <if test="housesignnum != null" >
        HOUSESIGNNUM,
      </if>
      <if test="deratemode != null" >
        DERATEMODE,
      </if>
      <if test="deratescale != null" >
        DERATESCALE,
      </if>
      <if test="deratemoney != null" >
        DERATEMONEY,
      </if>
      <if test="feefactval != null" >
        FEEFACTVAL,
      </if>
      <if test="feecalcval != null" >
        FEECALCVAL,
      </if>
      <if test="feememo != null" >
        FEEMEMO,
      </if>
      <if test="postpondaccept != null" >
        POSTPONDACCEPT,
      </if>
      <if test="oldsitnumgather != null" >
        OLDSITNUMGATHER,
      </if>
      <if test="feestand != null" >
        FEESTAND,
      </if>
      <if test="districtcode != null" >
        DISTRICTCODE,
      </if>
      <if test="mtfchargecode != null" >
        MTFCHARGECODE,
      </if>
      <if test="recnumgather != null" >
        RECNUMGATHER,
      </if>
      <if test="hid != null" >
        HID,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
        uf_getfid(SEQ_TBWKRECHOUSECODE.nextval),
      <if test="optypenum != null" >
         #{optypenum,jdbcType=DECIMAL},
      </if>
      <if test="recyear != null" >
         #{recyear,jdbcType=DECIMAL},
      </if>
      <if test="recnum != null" >
         #{recnum,jdbcType=DECIMAL},
      </if>
      <if test="housecode != null" >
         #{housecode,jdbcType=VARCHAR},
      </if>
      <if test="wxjjnum != null" >
        #{wxjjnum,jdbcType=VARCHAR},
      </if>
      <if test="districtnum != null" >
        #{districtnum,jdbcType=VARCHAR},
      </if>
      <if test="streetnum != null" >
         #{streetnum,jdbcType=VARCHAR},
      </if>
      <if test="prjnum != null" >
         #{prjnum,jdbcType=VARCHAR},
      </if>
      <if test="buildnum != null" >
        #{buildnum,jdbcType=VARCHAR},
      </if>
      <if test="unitnum != null" >
         #{unitnum,jdbcType=VARCHAR},
      </if>
      <if test="floornum != null" >
         #{floornum,jdbcType=VARCHAR},
      </if>
      <if test="doornum != null" >
         #{doornum,jdbcType=VARCHAR},
      </if>
      <if test="housesignnum != null" >
         #{housesignnum,jdbcType=VARCHAR},
      </if>
      <if test="deratemode != null" >
        #{deratemode,jdbcType=DECIMAL},
      </if>
      <if test="deratescale != null" >
        #{deratescale,jdbcType=DECIMAL},
      </if>
      <if test="deratemoney != null" >
        #{deratemoney,jdbcType=DECIMAL},
      </if>
      <if test="feefactval != null" >
        #{feefactval,jdbcType=DECIMAL},
      </if>
      <if test="feecalcval != null" >
        #{feecalcval,jdbcType=DECIMAL},
      </if>
      <if test="feememo != null" >
         #{feememo,jdbcType=VARCHAR},
      </if>
      <if test="postpondaccept != null" >
        #{postpondaccept,jdbcType=DECIMAL},
      </if>
      <if test="oldsitnumgather != null" >
        #{oldsitnumgather,jdbcType=VARCHAR},
      </if>
      <if test="feestand != null" >
        #{feestand,jdbcType=DECIMAL},
      </if>
      <if test="districtcode != null" >
        #{districtcode,jdbcType=DECIMAL},
      </if>
      <if test="mtfchargecode != null" >
       #{mtfchargecode,jdbcType=VARCHAR} ,
      </if>
      <if test="recnumgather != null" >
        #{recnumgather,jdbcType=VARCHAR},
      </if>
      <if test="hid != null" >
        #{hid,jdbcType=DECIMAL},
      </if>
    </trim>
    when matched then
    update
    <set >
      <if test="optypenum != null" >
         optypenum=#{optypenum,jdbcType=DECIMAL},
      </if>
      <if test="recyear != null" >
         recyear=#{recyear,jdbcType=DECIMAL},
      </if>
      <if test="recnum != null" >
         recnum=#{recnum,jdbcType=DECIMAL},
      </if>
      <if test="housecode != null" >
        housecode=#{housecode,jdbcType=VARCHAR},
      </if>
      <if test="wxjjnum != null" >
        wxjjnum=#{wxjjnum,jdbcType=VARCHAR},
      </if>
      <if test="districtnum != null" >
        districtnum=#{districtnum,jdbcType=VARCHAR},
      </if>
      <if test="streetnum != null" >
         streetnum=#{streetnum,jdbcType=VARCHAR},
      </if>
      <if test="prjnum != null" >
        prjnum=#{prjnum,jdbcType=VARCHAR},
      </if>
      <if test="buildnum != null" >
        buildnum=#{buildnum,jdbcType=VARCHAR},
      </if>
      <if test="unitnum != null" >
         unitnum=#{unitnum,jdbcType=VARCHAR},
      </if>
      <if test="floornum != null" >
         floornum=#{floornum,jdbcType=VARCHAR},
      </if>
      <if test="doornum != null" >
         doornum=#{doornum,jdbcType=VARCHAR},
      </if>
      <if test="housesignnum != null" >
         housesignnum=#{housesignnum,jdbcType=VARCHAR},
      </if>
      <if test="deratemode != null" >
        deratemode=#{deratemode,jdbcType=DECIMAL},
      </if>
      <if test="deratescale != null" >
        deratescale=#{deratescale,jdbcType=DECIMAL},
      </if>
      <if test="deratemoney != null" >
        deratemoney=#{deratemoney,jdbcType=DECIMAL},
      </if>
      <if test="feefactval != null" >
        feefactval=#{feefactval,jdbcType=DECIMAL},
      </if>
      <if test="feecalcval != null" >
        feecalcval=#{feecalcval,jdbcType=DECIMAL},
      </if>
      <if test="feememo != null" >
         feememo=#{feememo,jdbcType=VARCHAR},
      </if>
      <if test="postpondaccept != null" >
        postpondaccept=#{postpondaccept,jdbcType=DECIMAL},
      </if>
      <if test="oldsitnumgather != null" >
        oldsitnumgather=#{oldsitnumgather,jdbcType=VARCHAR},
      </if>
      <if test="feestand != null" >
        feestand=#{feestand,jdbcType=DECIMAL},
      </if>
      <if test="districtcode != null" >
        districtcode=#{districtcode,jdbcType=DECIMAL},
      </if>
      <if test="mtfchargecode != null" >
       mtfchargecode=#{mtfchargecode,jdbcType=VARCHAR} ,
      </if>
      <if test="recnumgather != null" >
        recnumgather=#{recnumgather,jdbcType=VARCHAR},
      </if>
      <if test="hid != null" >
        hid=#{hid,jdbcType=DECIMAL},
      </if>
    </set>
    where FID = #{fid,jdbcType=DECIMAL}
  </update>

 

分享到:
评论
2 楼 netfengxia 2017-02-04  
这个是Mybatis哦. 是一个ORM框架, 这里展示的是Mybatis的xml文件中如何对SQL中的Merge进行使用.
Oracle和Sql Server最新版都是有这个关键字的功能的.
1 楼 evic520 2014-12-08  
mysql有merge into的用法?是不是标题错了 楼主?

相关推荐

    Mybatis批量foreach merge into的用法

    首先,需要使用Oracle 9i及其以后版本支持的merge into语句,该语句可以实现insertOrUpdate的功能。然后,使用Mybatis的动态SQL语法foreach循环插入,待插入的实体bean的List通过查询数据库dual形成表。foreach的 ...

    springboot整合mybatis整合jpa使用entityManger

    例如,你可以使用`entityManager.persist()`来保存新实体,`entityManager.find()`来查找实体,`entityManager.merge()`来更新实体,以及`entityManager.remove()`来删除实体。EntityManager还提供了事务管理和查询...

    MySQL中实现插入或更新操作(类似Oracle的merge语句)

    然而,MySQL并不直接支持`MERGE`语句,但我们可以使用`INSERT ... ON DUPLICATE KEY UPDATE`语法来达到类似的效果。 `INSERT ... ON DUPLICATE KEY UPDATE`是MySQL提供的一种实用功能,它结合了`INSERT`和`UPDATE`...

    Mybatis批量更新报错问题

    在使用Mybatis进行数据库操作时,批量更新是一个常见的需求,特别是在处理大量数据的时候。然而,在实际操作中,可能会遇到批量更新报错的情况。本文将详细分析Mybatis批量更新的报错问题及其解决方法。 首先,报错...

    MyBatis获取数据库自生成的主键Id详解及实例代码

    在使用ORM(Object-Relational Mapping)框架如MyBatis时,我们可能需要在插入数据后立即获取到这个自动生成的主键ID,以便进一步处理关联的数据。本文将详细介绍如何在MyBatis中实现这一功能,并提供实例代码。 ...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    在SQL语句中,我们可以使用`&lt;foreach&gt;`标签来遍历集合中的元素,生成`OR`子句。下面是一个示例: ```xml SELECT * FROM your_table WHERE != null and tags.size() &gt; 0"&gt; (" separator=" OR " close=")"&gt; ...

    Mybatis Update操作返回值问题

    首先,当我们使用 Mybatis 的 update 语句执行更新操作时,返回的整数值实际上是数据库驱动提供的信息,而不是 Mybatis 自身计算的结果。对于大多数数据库系统,如 MySQL,这个返回值通常表示“匹配”的行数,即满足...

    Mybatis中foreach标签带来的空格\换行\回车问题及解决方案

    Mybatis 中的 foreach 标签是一个功能强大的工具,允许开发者在 SQL 语句中循环遍历集合对象。但是,在使用 foreach 标签时,经常会遇到空格、换行、回车问题,这些问题会导致 SQL 语句执行失败或返回错误的结果。 ...

    MyBatis实现Mysql数据库分库分表操作和总结(推荐)

    然后,使用MyBatis的SQL语句来实现用户数据的查询和操作。 ```xml SELECT userId, name FROM user_tab_#{tabIndex} WHERE userId = #{userId} ``` 其中,tabIndex是需要操作的表的索引值(0或1),userId是用户...

    mabatis自动生成工具

    使用Mybatis自动生成工具的优点: 1. **提高效率**:避免手动编写大量的重复代码,使开发者能够更专注于业务逻辑的实现。 2. **减少错误**:自动化的生成过程减少了人为出错的可能性,确保代码质量。 3. **一致性**...

    跟着铁哥学Java,MyStore项目 CH01 项目初始化

    - 使用`git status`查看冲突状态,`git mergetool`合并冲突,然后`git push`推送更新。 4. **分支管理**: - `git branch`查看当前分支,`git checkout -b 分支名`创建新的分支。 - `git push origin HEAD -u`将...

    JAVA面试题(下).pdf

    9. MyBatis是一个持久层框架,它使用XML配置或注解来定义SQL语句和映射规则。#和$书写占位符的区别在于#会被预编译到SQL中,而$则会直接替换到SQL语句中。 10. Spring框架是目前Java企业级开发中最流行的技术之一,...

    基于ssm宠物小程序源码数据库.zip

    3. **MyBatis**:MyBatis是一个持久层框架,它简化了JDBC代码,允许开发者通过XML或注解定义SQL语句。在本项目中,MyBatis用于与数据库进行交互,执行CRUD操作。开发者可以编写Mapper接口和对应的XML配置文件,实现...

    Java从零到企业级电商项目实战-服务端.zip

    9. **MyBatis框架**: 学习如何使用MyBatis进行持久层操作,包括SQL映射文件、动态SQL、结果集映射等。 10. **数据库知识**: 关系型数据库MySQL的基础使用,包括SQL查询语言、事务处理、存储过程等。此外,还将涉及...

    图书馆管理系统项目源码.zip

    6. **MyBatis**:MyBatis是一个持久层框架,它允许开发者编写SQL语句并与Java对象进行映射,降低了数据库操作的复杂性。在图书馆管理系统中,MyBatis可以用来方便地处理数据库CRUD操作。 7. **微信小程序开发**:...

    高校就业招聘系统微信小程序.zip

    开发者需要熟练使用Git的命令行操作,如commit、push、pull、merge等。 10. **文档编写**:完整的项目还需要相应的技术文档,包括需求分析、系统设计、接口文档、使用手册等,方便团队成员理解和维护系统。 综上所...

    java框架方面面试题

    update()和merge()方法用于更新游离态对象,而merge()方法能够同时处理save()和update()的功能。lock()方法通常用于对持久化对象加上乐观锁机制,而saveOrUpdate()方法则能够处理保存新对象或更新已存在的对象。 ...

    传智Hibernate框架资料

    Hibernate是一个强大的Java持久层框架,它提供了对象关系映射(ORM)功能,使得开发者可以使用面向对象的方式来操作数据库,避免了繁琐的SQL语句编写。在Java应用中,Hibernate极大地简化了数据库操作,使得开发更加...

    java框架面试题

    - **merge**:类似于update,但功能更强大,可以将一个游离态的对象或瞬时态的对象变为持久态,会触发INSERT或UPDATE语句。 - **lock**:锁定一个游离态的对象,使其变为持久态,同时设置锁定级别,防止其他事务修改...

    技术面试分享资源.ZIP

    MyBatis是一个轻量级的持久层框架,它简化了SQL操作,将SQL语句与Java代码分离。面试时,你需要理解动态SQL的概念,MyBatis的映射文件配置,以及如何通过Mapper接口进行数据操作。 3. **Java基础 - 三大集合(上/...

Global site tag (gtag.js) - Google Analytics