java操作Oracle类型XMLType
java操作Oracle类型XMLType总结一:使用jdbc
java操作Oracle类型XMLType总结二:使用Mybatis
对于XMLType类型的使用,本人也是第一次,因为它不是一个通用的数据库类型,因此在使用过程中碰到诸多问题,在这里作一下总结,以备忘。
先来了解一下什么是XMLType类型。
XMLType是Oracle从9i开始特有的数据类型,是一个继承了Blob的强大存在,可以用来存储xml并提供了相当多的操作函数。理论上可以保存2G大小的数据。
那怎么样通过java来插入XMLType类型的数据呢?项目当中采用的是Mybatis,总是出现莫名的异常,都搞不清楚到底是Mybatis的问题还是jdbc本身的问题,所以打算一步步来,先搞定jdbc,再解决Mybatis。在折腾了半天之后,发现jdbc操作主要有3种方法:
1234
123456789101112131415161718123456789Connection conn = ... ;//获得Connection PreparedStatement ps = ...;//获得PreparedSatement String sql = "insert into xmltable (XML) values(?)"; String xmldata = "<label>This is an XML fragment</label>"; //创建一个XMLType对象 XMLType xmltype = XMLType.createXML(conn, xmldata); ?ps.setObject(1, xmltype); ps.executeUpdate();此方法将创建XMLType的任务完全交给了客户端,因此客户端的压力大,数据库压力小。在实测过程中,需要添加两个jar包,不然会报找不到类的错误:
xdb.jar
xmlparserv2.jar
需要注意这jar包又没版本标注,很容易弄错,一开始我下载了个xdb.jar,怎么弄都不对提示找不到某个类,查看之后发现是属于oracle更早期版本,重新下载了一个xdb.jar后正常。
以上三种方法通过插入20万条数据测试比较发现:
第一种方法:耗时最短,服务器cpu消耗最大第二种方法:耗时最长,服务器cpu消耗居中
第三种方法:耗时居中,服务器cpu消耗最小
?
至此,jdbc操作XMLType类型数据终于算是小小的搞定了,不用说采用了第三种方案,但是项目中基本都不会直接用jdbc来操作,像当前项目中就采用了Mybatis,上面也讲到了使用Mybatis总是出现异常,查看了下Mybatis也没有对XMLType的实现,看来还有的折腾,不过jdbc已经搞定,思路已经清晰了不是?