字符串长度超过4000字符的数据存入oracle数据库里clob类型的字段里,并之后做前台查询展示

这个过程会产生的问题有:

1. 因为oracle的两个单引号之间字符长度不能超过4000,字符串长度超过4000字符后会报字符过长的错,无法直接insert或update进数据库,必须得转换成clob类型。

2.查出来的clob数据不是字符串,无法直接展示。

我在ssm框架环境下的实现是

insert或update的时候通过mybatis框架封装好的String转换clob类型的方式进行转换,再做数据库操作

mybatis是通过#{,jdbcType=..}来转换类型的,这样我们就不用重新写转换类型方法了。

在查询的时候,直接查clob类型的字段会给我返回一个oracle.sql.CLOB@ac47a5这样类型的值,有两种方法可以解决

1)在查出来字符串长度小于4000的时候可以用dbms_lob.substr(clob_column)这个oracle内置的函数进行clob转字符串操作。

2)在查出字符串长度大于4000的时候,就需要一个 clob转换string的方法了:

public String ClobToString(Clob clob) throws SQLException, IOException {

String reString = "";

Reader is = clob.getCharacterStream();

BufferedReader br = new BufferedReader(is);

String s = br.readLine();

StringBuffer sb = new StringBuffer();

while (s != null) {

sb.append(s);

s = br.readLine();

}

reString = sb.toString();

if(br!=null){

br.close();

}

if(is!=null){

is.close();

}

return reString;

}

通过上面这段代码可以直接把clob转成字符串。

我在String转clob的时候也查了网上很多的说法,有的说用java来转,转了以后在存到数据库里,看了一下,大概的意思就是说先创建一个clob对象,再把长字符串放到clob对象里进行转换,这种方法也是能实现的,就是没有那么方便,还有的说用存储过程,

DECLARE
REALLYBIGTEXTSTRING CLOB := '待插入的海量字符串';
BEGIN

INSERT INTO test_table VALUES('test', REALLYBIGTEXTSTRING, '0');
end ;
/

commit;

我试了一下没有起作用就放弃了。所以觉得最方便实现的就是由mybatis的转换。

看了一下mybatis转换类型的实现是这样说的:

mapping.typeHandler.getResult会获取查询结果值的实际类型,比如我们user表中id字段为int类型,那么它就对应Java中的Integer类型,然后通过调用statement.getInt("id")来获取其int值,其类型为Integer。metaObject.setValue方法会把获取到的Integer值设置到Java类中的对应字段。

所以最后我通过这样的流程实现clob数据的查,新增,修改或把查出来的数据再累加新的字符串再update到数据库里等等操作。

oralce的clob类型数据操作相关推荐

  1. hibernate clob mysql_Hibernate操作Clob类型数据

    在POJO中字符串大对象可以声明成一个java.lang.String或java.sql.Clob类型. 当程序从数据库中加载Clob类型数据时,仅仅加载了一个Clob类型的数据的逻辑指针.我们需要通 ...

  2. java将clob类型文件写到磁盘_Java对Oracle中Clob类型数据的读取和写入

    Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的 Java对Oracle中Clob数据类型是不能够直接插入的, ...

  3. clob在java里的类型_Java对Oracle中Clob类型数据的读取和写入(转)

    Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的也不是很清楚,我对网上资料进行了整理和总结,具体看代码: 写入 ...

  4. mysql数据库clob类型数据_JDBC读写MySQL的BLOB和CLOB类型数据(带代码)

    JDBC对LOB的读写 在JDBC中提供了java.sql.Blob和java.sql.Clob两个类分别代表BLOB和CLOB数据 •BLOB(Binary Large Object):用于存储大量 ...

  5. python查看dataframe数据类型_python pandas中DataFrame类型数据操作函数的方法

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...

  6. python dataframe函数_python pandas中DataFrame类型数据操作函数的方法

    这篇文章主要介绍了关于python pandas中DataFrame类型数据操作函数的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python数据分析工具pandas中Data ...

  7. (Redis_学习一)Redis关于string类型和hash类型数据操作

    Redis关于string类型和hash类型数据操作 set name xiaohongyang // get name setnx name xiaohy get name setex name 1 ...

  8. oracle的clob类型对应java,java对oracle9i中CLOB类型的操作

    这是一个完整的使用java对oracle9i的操作,其实,使用oracle10g后,操作将非常方便,但现在由于仍在使用oracle9i,所以不得不忍受这种痛苦.现将对oracle9i中CLOB类型的操 ...

  9. python连接oracle数据库 插入clob类型数据

    python连接oracle数据库 插入clob类型数据 连接数据库 import cx_Oracle as cx #导入模块 con = cx.connect('root', 'root123', ...

最新文章

  1. Facebook开源ptr:在Python环境中并行运行单元测试
  2. POI操作Excel常用方法总结 .
  3. cast函数 oracle 日期_从Oracle到PG 该做的改造工作一个都不能少!
  4. Android Gradle编译问题
  5. mysql整数索引没用到_MYSQL 索引无效和索引有效的详细介绍
  6. Anigram单词(51Nod-1095)
  7. [Unity] 无脚本导出 Texture 为 PNG
  8. vue.js表格赋值_vue.js input框之间赋值方法
  9. DateTime Calendar
  10. java读properties的通用类,兼容linux和windows
  11. 59. DNS 服务器
  12. dbms_java 包不存在_Oracle的sql开发之包技术实战
  13. 《财务共享服务》读书笔记
  14. 优维低代码:Pipes 管道
  15. WPF AirSpace 空域问题解决方案
  16. 基于SpringBoot的影视/短视频网站系统
  17. 从 B 站火到 GitHub,国人开发者又一黑科技面世!
  18. git 创建本地分支及远程分支并且关联分支
  19. MySQL——数据库基本操作(教程)
  20. kali burpsuit抓取不了https的包

热门文章

  1. 互联网公司高并发图片存储服务架构设计一
  2. ORA-12516 解决方法
  3. 荣耀平板5鸿蒙降级安卓并刷入原生Android12系统——麒麟659,4+64G,10英寸wifi版本
  4. 华中科技大学 教学大纲 计算机,《计算理论》课程教学大纲
  5. 【C语言】用代码实现九九乘法口诀表
  6. 多线程性能及效率问题
  7. 华为云早报 谷歌亚马逊抢食美军100亿美元云计划
  8. 浅谈未来的人工智能与奇点临近
  9. (PTA)6-9 字符串压缩
  10. Python浪漫520表白代码