ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

java操作oracle大字段CLOB

2022-07-06 11:00:31  阅读:244  来源: 互联网

标签:java String CLOB jdbcType oracle obj VARCHAR pstmt


一、通过mybatis框架,不需要做特殊操作

 

查询

 1 <resultMap id="BaseResultMap" type="com.wondersgroup.view360.ui.imagelogo.model.SecurityImageLogo">
 2         <id column="ID" jdbcType="VARCHAR" property="id"/>
 3         <result column="IMAGECODE" jdbcType="VARCHAR" property="imagecode"/>
 4         <result column="IAMGENAME" jdbcType="VARCHAR" property="iamgename"/>
 5         <result column="CREATEUSER" jdbcType="VARCHAR" property="createuser"/>
 6         <result column="CREATETIME" jdbcType="TIMESTAMP" property="createtime"/>
 7         <result column="UPDATEUSER" jdbcType="VARCHAR" property="updateuser"/>
 8         <result column="UPDATETIME" jdbcType="TIMESTAMP" property="updatetime"/>
 9         <result column="IMAGEVALUE" jdbcType="CLOB" property="imagevalue"/>
10     </resultMap>
11 
12 <sql id="Base_Column_List">
13     ID, IMAGECODE, IAMGENAME, CREATEUSER, CREATETIME, UPDATEUSER, UPDATETIME, IMAGEVALUE
14   </sql>
15 
16 <select id="selectByExample" parameterType="com.wondersgroup.view360.ui.imagelogo.model.SecurityImageLogoExample"
17             resultMap="BaseResultMap">
18         select
19         <if test="distinct">
20             distinct
21         </if>
22         <include refid="Base_Column_List"/>
23         from SECURITY_IMAGE_LOGO
24         <if test="_parameter != null">
25             <include refid="Example_Where_Clause"/>
26         </if>
27         <if test="orderByClause != null">
28             order by ${orderByClause}
29         </if>
30     </select>

 

插入

1 <insert id="insert" parameterType="com.wondersgroup.view360.ui.imagelogo.model.SecurityImageLogo">
2     insert into SECURITY_IMAGE_LOGO (ID, IMAGECODE, IAMGENAME, 
3       CREATEUSER, CREATETIME, UPDATEUSER, 
4       UPDATETIME, IMAGEVALUE)
5     values (#{id,jdbcType=VARCHAR}, #{imagecode,jdbcType=VARCHAR}, #{iamgename,jdbcType=VARCHAR}, 
6       #{createuser,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updateuser,jdbcType=VARCHAR}, 
7       #{updatetime,jdbcType=TIMESTAMP}, #{imagevalue,jdbcType=CLOB})
8   </insert>

mybatis源码已经自动实现了对CLOB字段的查询和插入操作

 

 

二、通过Java代码来查询和插入CLOB字段

 

查询

 

对字段类型进行判断

1 if(obj instanceof String){
2                                     xmlStringEMR = (String)obj;
3                                 } else if(obj instanceof NClob){
4                                     xmlStringEMR = modelMaintainConfigService.clob2Str((NClob)obj);
5                                 }
6                                 else if(obj instanceof Clob){
7                                     xmlStringEMR =oracleClob2Str((Clob) obj);
8                                 }

 

CLOB转成字符串

 1 /*
 2      * 将CLOB类型转成String进行解析
 3      * */
 4     public String oracleClob2Str(Clob clob)  {
 5         try {
 6             return (clob != null ? clob.getSubString(1, (int) clob.length()) : null);
 7         } catch (SQLException e) {
 8             // TODO Auto-generated catch block
 9             e.printStackTrace();
10         }
11         return "";
12     }

 

将NCLOB转成字符串

 1 /**
 2      * 将NCLOB转成字符串
 3      * @param nclob
 4      * @return
 5      * @throws Exception
 6      */
 7     @Override
 8     public String clob2Str(NClob nclob) throws Exception {
 9         String content = "";
10         try {
11             Reader is = nclob.getCharacterStream();
12             BufferedReader buff = new BufferedReader(is);// 得到流
13             String line = buff.readLine();
14             StringBuffer sb = new StringBuffer();
15             while (line != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
16                 sb.append(line);
17                 line = buff.readLine();
18             }
19             content = sb.toString();
20         } catch (Exception e) {
21             log.error("java.sql.NClob类型转java.lang.String类型出错..."+e.getCause());
22             e.printStackTrace();
23         }
24         return content;
25     }

 

插入

 1 Class.forName("com.mysql.jdbc.Driver");
 2 //new oracle.jdbc.driver.OracleDriver();
 3 //建立连接
 4 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser", "root", "root");
 5 //使用PreparedStatement对象里来构建并执行SQL语句,7个问号代表7个字段预先要保留的值
 6 pstmt = conn.prepareStatement("INSERT INTO staff(name, age, sex,address, depart, worklen,wage) VALUES (?, ?, ?, ?, ?, ?, ?)");
 7 //通过PreparedStatement对象里的set方法去设置插入的具体数值
 8 pstmt.setString(1, name);
 9 pstmt.setInt(2, age);
10 pstmt.setString(3, sex);
11 pstmt.setString(4,address );
12 pstmt.setString(5, depart);
13 pstmt.setInt(6, worklen);
14 StringReader c = new StringReader(s);
15 //这里插入大字段
16 pstmt.setCharacterStream(7, c,s.length());
17 pstmt.executeUpdate();

 

标签:java,String,CLOB,jdbcType,oracle,obj,VARCHAR,pstmt
来源: https://www.cnblogs.com/zhncnblogs/p/16449934.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有