mybatis 使用oracle merge into 语句踩坑实录
由于需求涉及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 语句踩坑实录的更多相关文章
- ffmpeg 踩坑实录 添加实时水印(二)
一.背景介绍 最近领导要求做一个视频录制的相关项目.其中,需要对视频文件进行添加 实时时间水印.于是,我想到了使用之前的ffmpeg来做. 二.ffmpeg实际操作 首先把需要添加水印的视频文件,上传 ...
- 后端路由项目由 gulp 改为 webpack 的踩坑实录
前言 公司有个后端路由的项目是用 gulp 作为前端自动化构建工具,最近学习了一下 webpack,深感其强大,一狠心将其改成了 webpack 构建,以下是踩坑实录. gulp 先来说说原来的架构. ...
- JAVA实用案例之文件导出(JasperReport踩坑实录)
写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...
- JasperReport报表导出踩坑实录
写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...
- 『OGG 02』Win7 配置 Oracle GoldenGate Adapter Java 踩坑指南
上一文章 <__Win7 配置OGG(Oracle GoldenGate).docx>定下了 两个目标: 目标1: 给安装的Oracle_11g 创建 两个用户 admin 和 root ...
- HashMap踩坑实录——谁动了我的奶酪
说到HashMap,hashCode 和 equals ,想必绝大多数人都不会陌生,然而你真的了解这它们的机制么?本文将通过一个简单的Demo还原我自己前不久在 HashMap 上导致的线上问题,看看 ...
- (最新)VS2015安装以及卸载过程——踩坑实录
前言 Visual Studio (简称VS)是微软公司旗下最重要的软件集成开发工具产品.是目前最流行的 Windows 平台应用程序开发环境,也是无数人学习编程的入门软件之一.Visual Stud ...
- 使用IDEA配置Maven + SpringMVC + Mybatis 【一步一步踩坑详细配置完成】
PS:初学,想使用Maven配置一个SpringMVC的开发环境,照着网上的各种图文解说,配置了好久都没成功,有些写的不够详细,有些只有写一半,走了不少弯弯绕绕,踩了不少的坑,此文将正确配置成功的步骤 ...
- Oracle merge into 语句进行insert或者update操作,如果存在就update,如果不存在就insert
merge into的形式: MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] ...
随机推荐
- 栈溢出原理与 shellcode 开发
ESP:该指针永远指向系统栈最上面一个栈帧的栈顶 EBP:该指针永远指向系统栈最上面一个栈帧的底部 01 修改函数返回地址 #include<stdio.h> #include< ...
- 记第二届CCPC全国女生赛参赛体验
离比赛时间已经有点久了,今天整理博客看到“”参赛体会“”这一分类,觉得记录一下也好 流水账记一下感受 因为题目我已经忘记了.. 第一次..那么久..大概有三个多小时在金牌区吧.. 然后就是一无所出了. ...
- 【Python】socket编程-3
. SocketServer最简单的使用方法: () 创建一个Handler类,继承自BaseRequestHandler,重写其handle(),在该方法中完成对请求的处理. () 实例化一个Ser ...
- 大数据-04-Hbase入门
本文主要来自于 http://dblab.xmu.edu.cn/blog/install-hbase/ 谢谢原作者 本指南介绍了HBase,并详细指引读者安装HBase. 前面第二章学习指南已经指导大 ...
- JavaScript中的内置对象-8--1.Array(数组)-Array构造函数; 数组的栈方法; 数组的转换方法; 数组的操作方法; 删除-插入-替换数组项; ECMAScript为数组实例添加的两个位置方法;
JavaScript内置对象-1Array(数组) 学习目标 1.掌握任何创建数组 2.掌握数值元素的读和写 3.掌握数组的length属性 如何创建数组 创建数组的基本方式有两种: 1.使用Arra ...
- 【转载】 强化学习(三)用动态规划(DP)求解
原文地址: https://www.cnblogs.com/pinard/p/9463815.html ------------------------------------------------ ...
- MySQL的查询语句
一.基本查询语句 1.1从单个表中查询列 语法:select 查询的列1,查询的列2 from 表名 where 条件 group by 分组条件 order by 排序条件 having ...
- [LeetCode&Python] Problem 455. Assign Cookies
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- 解决cocos2dx调用removeFromParent后报错问题
原因:cocos2dx的bug 解决办法: 放到action中,前面添加一个DelayTime延迟,代码如下 this->runAction(Sequence::create(DelayTime ...
- BigDecimal的一些用法
在多功能计算器项目中,计算器和单位换算功能都要求要有20位的精确度,并且要支持超大数,因此double类型就完全不够看了(double类型最多支持16位有效数字,且最大值只支持10^308次方),最后 ...