由于需求涉及oracle的clob类型字段,在mybatis的mapper xml文件中编写merge into语句时总是失败。

附上错误代码

<insert id="mergeInto">
<selectKey resultType="java.lang.String" order="BEFORE"
keyProperty="id">
SELECT to_char(sysdate,'yyyymmdd')||seq_dr_bcxx.nextval
AS ID FROM dual
</selectKey>
MERGE INTO dr_doc_info doc
USING (SELECT #{cankwxzwtm} cankwxzwtm,
#{zz} zz FROM dual) d
ON (doc.cankwxzwtm = d.cankwxzwtm and doc.zz =
d.zz)
WHEN matched THEN
UPDATE SET doc.MOD_TIME =
#{modTime},doc.UPD_USER = #{updUser}
WHEN not matched THEN
INSERT (
ID,
CKWXLX,
CANKWXBH,
CANKWXZWTM,
CANKWXYWTM,
ZZ,
DYZZXM,
DIYZZDW,
DYZZDZ,
TXZZDZ,
TXZZXM,
TXZZDW,
KANM,
YEAR,
JUAN,
QI,
YEMA,
ZWGJC,
YWGJC,
<!-- zhongwzy, YINGWZY, -->
FUND_TYPE,
FLH,
IS_OPEN,
<!-- CKWXLY, -->
REG_TIME,
MOD_TIME,
MEMO,
CRT_USER,
UPD_USER
)VALUES(
#{id,jdbcType=VARCHAR},
#{ckwxlx,jdbcType=VARCHAR},
#{cankwxbh,jdbcType=VARCHAR},
#{cankwxzwtm,jdbcType=VARCHAR},
#{cankwxywtm,jdbcType=VARCHAR},
#{zz,jdbcType=VARCHAR}, #{dyzzxm,jdbcType=VARCHAR},
#{diyzzdw,jdbcType=VARCHAR},
#{dyzzdz,jdbcType=VARCHAR},
#{txzzdz,jdbcType=VARCHAR},
#{txzzxm,jdbcType=VARCHAR},
#{txzzdw,jdbcType=VARCHAR},
#{kanm,jdbcType=VARCHAR}, #{year,jdbcType=VARCHAR},
#{juan,jdbcType=VARCHAR},
#{qi,jdbcType=VARCHAR},
#{yema,jdbcType=VARCHAR},
#{zwgjc,jdbcType=VARCHAR},
#{ywgjc,jdbcType=VARCHAR},
<!-- #{zhongwzy,jdbcType=CLOB,typeHandler=org.apache.ibatis.type.ClobTypeHandler},
#{yingwzy,jdbcType=CLOB,typeHandler=org.apache.ibatis.type.ClobTypeHandler}, -->
#{fundType,jdbcType=VARCHAR},
#{flh,jdbcType=VARCHAR},
#{isOpen,jdbcType=VARCHAR},
<!-- #{ckwxly,jdbcType=VARCHAR}, -->
#{regTime,jdbcType=TIMESTAMP},
#{modTime,jdbcType=TIMESTAMP},
#{memo,jdbcType=VARCHAR},
#{crtUser,jdbcType=VARCHAR},
#{updUser,jdbcType=VARCHAR}
)
</insert>

主要有三点问题,

1,clob类型的字段比较 要借助函数 dbms_lob.compare() 。

2,clob字段手写insert入库失败(未解决)。

3,借助存储过程成功了(不想用存储过程)。

mybatis 使用oracle merge into 语句踩坑实录的更多相关文章

  1. ffmpeg 踩坑实录 添加实时水印(二)

    一.背景介绍 最近领导要求做一个视频录制的相关项目.其中,需要对视频文件进行添加 实时时间水印.于是,我想到了使用之前的ffmpeg来做. 二.ffmpeg实际操作 首先把需要添加水印的视频文件,上传 ...

  2. 后端路由项目由 gulp 改为 webpack 的踩坑实录

    前言 公司有个后端路由的项目是用 gulp 作为前端自动化构建工具,最近学习了一下 webpack,深感其强大,一狠心将其改成了 webpack 构建,以下是踩坑实录. gulp 先来说说原来的架构. ...

  3. JAVA实用案例之文件导出(JasperReport踩坑实录)

    写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...

  4. JasperReport报表导出踩坑实录

    写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...

  5. 『OGG 02』Win7 配置 Oracle GoldenGate Adapter Java 踩坑指南

    上一文章 <__Win7 配置OGG(Oracle GoldenGate).docx>定下了 两个目标: 目标1: 给安装的Oracle_11g 创建 两个用户 admin 和 root ...

  6. HashMap踩坑实录——谁动了我的奶酪

    说到HashMap,hashCode 和 equals ,想必绝大多数人都不会陌生,然而你真的了解这它们的机制么?本文将通过一个简单的Demo还原我自己前不久在 HashMap 上导致的线上问题,看看 ...

  7. (最新)VS2015安装以及卸载过程——踩坑实录

    前言 Visual Studio (简称VS)是微软公司旗下最重要的软件集成开发工具产品.是目前最流行的 Windows 平台应用程序开发环境,也是无数人学习编程的入门软件之一.Visual Stud ...

  8. 使用IDEA配置Maven + SpringMVC + Mybatis 【一步一步踩坑详细配置完成】

    PS:初学,想使用Maven配置一个SpringMVC的开发环境,照着网上的各种图文解说,配置了好久都没成功,有些写的不够详细,有些只有写一半,走了不少弯弯绕绕,踩了不少的坑,此文将正确配置成功的步骤 ...

  9. Oracle merge into 语句进行insert或者update操作,如果存在就update,如果不存在就insert

    merge into的形式:    MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] ...

随机推荐

  1. ibatis集成封装之路(to mysql)

    hello <tx:annotation-driven transaction-manager=" "/> 插入记录ID的坑 https://renjieguixion ...

  2. mysql取差集、交集、并集

    mysql取差集.交集.并集 博客分类: Mysql数据库 需求:从两个不同的结果集(一个是子集,一个是父集),字段为电话号码phone_number,找出父集中缺少的电话号码,以明确用户身份. 结合 ...

  3. python中闭包

    闭包是指内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure). 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变 ...

  4. python day 16作业

    day18天作业及默写1,完成下列功能: 1.1创建一个人类Person,再类中创建3个静态变量(静态字段) animal = '高级动物' soup = '有灵魂' language = '语言' ...

  5. DocumentFragment --更快捷操作DOM的途径

    使用DocumentFragment将一批子元素添加到任何类似node的父节点上,对这批子元素的操作不需要一个真正的根节点.可以不依赖可见的DOM来构造一个DOM结构,而效率高是它真正的优势,试验表明 ...

  6. JS之计时器

    JavaScript 计时事件 通过使用 JavaScript,我们有能力作到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行.我们称之为计时事件. 在 JavaScritp 中使用计 ...

  7. Ubuntu创建新用户并设置权限

    打开终端开启root账户 sudo passwd -u root 设置root密码,输入两次 sudo passwd root 切换root账号 su - 或 su root 退出root账户使用ex ...

  8. MySQL中的运算符和时间运算

    一.MySQL中运算符的分类 算术运算符,比较运算符,逻辑运算符,按位运算符 二.算数运算符 符号                            作用 + 加法   - 减法   * 乘法   ...

  9. 配置url防盗链、目录权限访问控制Directory、文件访问权限控制FilesMatch

    1.配置url防盗链: 编辑:/usr/local/apache2.4/conf/extra/httpd-vhosts 文件 写入: <Directory /var/www/222/>Se ...

  10. Windows共享设置

    Windows文件共享默认是开启的,任何用户都可以方便的设置共享目录.那么如何关闭并禁止呢. ====打开或关闭网上邻居的网络发现:1. 右键单击,网上邻居,弹出菜单选择:属性,打开网络和共享中心界面 ...