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类型字段的更多相关文章

  1. .Net处理Oracle中Clob类型字段总结

    最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的 ...

  2. java、oracle对CLOB处理

    oracle CLOB字段转换位VARCHAR 1.实际上处理CLOB字段的时候,直接TO_CHAR,当长度超过4000的时候,会报错,提示列被截取: CLOB转varchar2:select to_ ...

  3. Spring JDBC处理CLOB类型字段

    以下示例将演示使用spring jdbc更新CLOB类型的字段值,即更新student表中的可用记录. student表的结构如下 - CREATE TABLE student( ID INT NOT ...

  4. Oracle中Clob类型处理解析

    最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...

  5. Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值

    感谢原作者:破剑冰-Oracle中Clob类型处理解析 上一篇分析:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 最近为Clob字段在插入数据时发现当字符的字节数(一个半角字符一 ...

  6. Oracle中Clob类型处理解析 (转)

    转:原文:http://blog.csdn.net/pojianbing/article/details/2789426      最近利用NHibernate映射类型为Clob字段在插入数据时发现当 ...

  7. ORACLE插入DATE类型字段

    1 怎样在ORACLE中输入DATE类型的字段 insert into table_name (date_column) values(to_date('2006-06-04','yyyy-mm-dd ...

  8. Java 存储和读取 oracle CLOB 类型字段的实用方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Str ...

  9. oracle中关于clob类型字段的查询效率问题

    今天,公司项目某个模块的导出报如下错误: HTTP Status 500 – Internal Server Error Type Exception Report Message Handler d ...

随机推荐

  1. Linux Redis的性能展示

    我们可以通过redis-cli 连接上redis ,例如 : redis-cli -h 127.0.0.1 -p 6379 连接上redis,然后通过INFO查看redis的一些信息.我们可以查看一些 ...

  2. 数据结构之栈(stack)

    1,栈的定义 栈:先进后出的数据结构,如下图所示,先进去的数据在底部,最后取出,后进去的数据在顶部,最先被取出. 栈常用操作: s=Stack() 创建栈 s.push(item) 将数据item放在 ...

  3. [MySql]MySql中外键设置 以及Java/MyBatis程序对存在外键关联无法删除的规避

    在MySql设定两张表,其中product表的主键设定成orderTb表的外键,具体如下: 产品表: create table product(id INT(11) PRIMARY KEY,name ...

  4. Android即时通讯开发之XMPP (一)初识XMPP协议和asmack

    在讲XMPP和asmck之前 ,我还是先分享一些资源文档,如果你有耐心,可以直接忽略我下面所写的.下面有关XMPP的介绍大部分是摘抄网上的文档,后面我会写一些基于XMPP协议和asmck开源库的聊天室 ...

  5. buildscript和allprojects的作用和区别是什么?

    在Android Studio的Project的build.gradle中, // Top-level build file where you can add configuration optio ...

  6. RCAN——Image Super-Resolution Using Very Deep Residual Channel Attention Networks

    1. 摘要 在图像超分辨领域,卷积神经网络的深度非常重要,但过深的网络却难以训练.低分辨率的输入以及特征包含丰富的低频信息,但却在通道间被平等对待,因此阻碍了网络的表示能力. 为了解决上述问题,作者提 ...

  7. CentOS 7 应用

    为方便以下CentOS7简称C7,CentOS6简称C6 优化 1.安装常用功能 yum -y install bash-completion lrzsz telnet tree vim wget n ...

  8. 基于SAR对Linux资源的监控shell脚本

    #! /bin/bash ] # $# 传递给脚本或函数的参数个数 then 脚本名称 exit -; fi SLEEP_TIME=$ LOG=$ while true do #线程数 thread_ ...

  9. 10.service 详解

    10.service 详解 什么是service:Kubernetes中的Service 是一个抽象的概念,它定义了Pod的逻辑分组和一种可以访问它们的策略,这组Pod能被Service访问,使用YA ...

  10. Flask中的请求上下文和应用上下文

    在Flask中处理请求时,应用会生成一个“请求上下文”对象.整个请求的处理过程,都会在这个上下文对象中进行.这保证了请求的处理过程不被干扰.处理请求的具体代码如下: def wsgi_app(self ...