Java更新Oracle的clob类型字段
Java更新Oracle的clob类型字段
1.查询该clob字段
<select id="selectItsmTask" resultType="java.util.HashMap"
parameterType="java.util.HashMap">
select a.task_oid,a.task_history from itsm_task a where a.task_oid = #{REQ_TASK_OID,jdbcType=VARCHAR}
</select>
2.处理该clob字段查询结果
/**
* Clob类型 转String
*
* @param clob
* @return
*/
private String ClobToString(Clob clob) {
String ret = "";
try {
Reader read = clob.getCharacterStream();
BufferedReader br = new BufferedReader(read);
String s;
s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
s = br.readLine();
}
ret = sb.toString();
if (br != null) {
br.close();
}
if (read != null) {
read.close();
}
} catch (SQLException e) {
logger.error("Clob转String失败(sql):" + e);
} catch (IOException e) {
logger.error("Clob转String失败:" + e);
}
return ret;
}
/**
* 修改clob字段内容
*
* @param map
* @return
*/
private void updateClob(Map<String, Object> map) {
Map<String, Object> updateInfo = new HashMap<String, Object>();
updateInfo.put("reqTaskOid", map.get("REQ_TASK_OID"));
// 获取itsm_task中的task_history字段内容
Map<String, Object> result = fieldsModifyMapper.selectItsmTask(map);
Clob columnClob = (Clob) result.get("TASK_HISTORY");
String taskHistory = ClobToString(columnClob);
// 修改itsm_task中的task_history字段内容
// 创建xml的Document对象
try {
Document document = DocumentHelper.parseText(taskHistory);
List lists = document.selectNodes("/workflow/node/fields/field");//寻找field节点
Iterator iter = lists.iterator();
while (iter.hasNext()) {
Element fieldElement = (Element) iter.next();
if (fieldElement.attributes().size() > 0) {
Attribute attr = (Attribute) fieldElement.attributes().get(0);
if (attr.getValue().equals("hope_finish_date")) {
fieldElement.setText("<![CDATA["+String.valueOf(map.get("FLD_HOPE_FINISH_DATE_NEW"))+"]]>");
}
if (attr.getValue().equals("software_req_content")) {
fieldElement.setText("<![CDATA["+String.valueOf(map.get("FLD_SOFTWARE_REQ_CONTENT_NEW"))+"]]>");
}
if (attr.getValue().equals("req_complexity")) {
fieldElement.setText("<![CDATA["+String.valueOf(map.get("FLD_REQ_COMPLEXITY_NEW_ID"))+"]]>");
}
if (attr.getValue().equals("is_dev_assessment")) {
fieldElement.setText("<![CDATA["+String.valueOf(map.get("FLD_IS_DEV_ASSESSMENT_NEW_ID"))+"]]>");
}
}
}
updateInfo.put("taskHistory", StringEscapeUtils.unescapeXml(document.asXML()));
} catch (DocumentException e) {
e.printStackTrace();
}
fieldsModifyMapper.updateItsmTask(updateInfo);
}
3.更新该clob字段查询结果
<update id="updateItsmTask" parameterType="java.util.HashMap">
update itsm_task a
<set>
<if test="taskHistory != null">
a.task_history =#{taskHistory,jdbcType=CLOB}
</if>
</set>
where a.task_oid = #{reqTaskOid,jdbcType=VARCHAR}
</update>
**注意:**使用StringEscapeUtils.unescapeXml(String str)方法,防止标签符号在存入Oracle数据库的时候被转义。
Java更新Oracle的clob类型字段的更多相关文章
- .Net处理Oracle中Clob类型字段总结
最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的 ...
- java、oracle对CLOB处理
oracle CLOB字段转换位VARCHAR 1.实际上处理CLOB字段的时候,直接TO_CHAR,当长度超过4000的时候,会报错,提示列被截取: CLOB转varchar2:select to_ ...
- Spring JDBC处理CLOB类型字段
以下示例将演示使用spring jdbc更新CLOB类型的字段值,即更新student表中的可用记录. student表的结构如下 - CREATE TABLE student( ID INT NOT ...
- Oracle中Clob类型处理解析
最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...
- Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值
感谢原作者:破剑冰-Oracle中Clob类型处理解析 上一篇分析:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 最近为Clob字段在插入数据时发现当字符的字节数(一个半角字符一 ...
- Oracle中Clob类型处理解析 (转)
转:原文:http://blog.csdn.net/pojianbing/article/details/2789426 最近利用NHibernate映射类型为Clob字段在插入数据时发现当 ...
- ORACLE插入DATE类型字段
1 怎样在ORACLE中输入DATE类型的字段 insert into table_name (date_column) values(to_date('2006-06-04','yyyy-mm-dd ...
- Java 存储和读取 oracle CLOB 类型字段的实用方法
import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Str ...
- oracle中关于clob类型字段的查询效率问题
今天,公司项目某个模块的导出报如下错误: HTTP Status 500 – Internal Server Error Type Exception Report Message Handler d ...
随机推荐
- BIOS之于系统启动
#BIOS之于操作系统 操作系统从开机通电到系统启动成功(执行main函数)分为3个步骤 启动BIOS,准备实模式下中断向量表和中断服务程序 从启动盘加载操作系统程序(包括boot镜像和root文件系 ...
- 【线性代数】2-3:消元与矩阵的关系(Elimination and Matrix)
title: [线性代数]2-3:消元与矩阵的关系(Elimination and Matrix) toc: true categories: Mathematic Linear Algebra da ...
- js产生一个随机的字符串数字组合
/** * 随机生成字符串 * @param randomFlag 产生任意长度随机字母数字组合 * @param min 任意长度最小位[固定位数] * @param max 任意长度最大位 * @ ...
- 学数据分析到底要不要掌握Linux-Python基础前传(2)
使用Python的数据分析师到底要不要掌握Linux? 对于上面的问题,大部分的答案是Python数据分析在windows的环境下跑跑就可以了,没有必要再花时间来学习Linux; 这里jacky有一个 ...
- UITableView动态改变Cell高度
demo下载地址:https://github.com/smileyborg/TableViewCellWithAutoLayout 版权声明:本文为博主原创文章,未经博主允许不得转载.
- BUUCTF平台-web-边刷边记录-1
1.WarmUp 思路很清晰,文件包含,漏洞点在代码会二次解码,只需注入一个?就可以使用../../进行路径穿越,然后去包含flag,flag路径在hint.php里面有 2.easy_tornado ...
- 面试题:this指针的指向,以及call、apply应用
var a = 2; function test(){ var a = 4; console.log(this.a); this.a = 1; } test();//2 //这里为什么是2?因为调用t ...
- centos 如何查看命令是由哪个包提供的
yum whatprovides */ifconfig Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ...
- k8s应用01-----入门实例
安装一个单机版的K8S 1.关闭防火墙firewalld2.安装etcd和kubernetesyum install -y etcd kubernetes(会自动安装docker)3.修改配置文件修改 ...
- Android通讯-webSocket
概述 上一篇简单的认识了Socket以及他的使用,在学习过程中看到了WebSocket的身影,于是乎百度了一把,这货也可以做全双工的网络通讯,而且是html5提出来的新东西!程序员嘛!就是要对新的东西 ...