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. [Luogu] 文艺平衡树(Splay)

    题面:https://www.luogu.org/problemnew/show/P3391 题解:https://www.zybuluo.com/wsndy-xx/note/1138892

  2. Noip2016 提高组 Day1

    T1 玩具迷题 直通 思路: 1.首先根据数据范围来看,储存小人的姓名开一个二维char数组即可(不会开爆) 2.然后看他给出的样例以及条件什么的,能够确定出 ①朝内向右,朝外向左均为+ ②朝内向左, ...

  3. premiere pro 2019 mac 破解

    链接:https://pan.baidu.com/s/14p1qj6pI1F3SP1SG4TUFHA  密码:seug

  4. python正则表达式的用法

    import re r1 = re.compile(r'(?im)(?P<name></html>)$') content = """ <H ...

  5. Codeforces 869E. The Untended Antiquity (二维Fenwick,Hash)

    Codeforces 869E. The Untended Antiquity 题意: 在一张mxn的格子纸上,进行q次操作: 1,指定一个矩形将它用栅栏围起来. 2,撤掉一个已有的栅栏. 3,询问指 ...

  6. LG5283 异或粽子

    题意 共有\(n\)个数,选择\(k\)个不同的\([l,r]\)区间,使得它们的异或和最大 $ 1 \leq n \leq 5 \times 10^5,k \leq 2 \times 10^5$ 思 ...

  7. ios真机调试教程(不上架App Store安装到手机)

    原文 不上架App Store安装到手机调试测试,需要用到ios真机调试证书打包的ipa才能安装到非越狱的手机使用. 2017年最新整理的ios真机调试的详细图文步骤流程,轻松的把你开发的ios ap ...

  8. 3.AOP中的IntroductionAdvisor

    上篇中的自定义Advisor是实现的AbstractPointcutAdvisor,Advisor其实还有一个接口级别的IntroductionAdvisor                     ...

  9. linux下编译安装ACE-6.4.2(adpative communication environment)

    1.环境 CentOS-6.5-x86_64-bin-DVD1.iso VMware_workstation_full_12.5.2 (2).exe ACE-6.4.2.tar.gz 下载链接:htt ...

  10. Python-sympy科学计算与数据处理(求极限及其它功能)

    极限 其它功能