• java操作oracle大字段CLOB


    一、通过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();
  • 相关阅读:
    js json与字符串相互转换
    Web 加入favicon
    JS 深拷贝
    C# 读取配置文件
    设计模式之抽象工厂模式
    设计模式之工厂方法的隐藏
    设计模式之工厂方法的重载
    设计模式之工厂方法配置文件与反射
    C#设计模式之工厂方法模式
    jq解析json文件
  • 原文地址:https://www.cnblogs.com/zhncnblogs/p/16449934.html
Copyright © 2020-2023  润新知