Clob和String互转、Blob和String互转、String和Document互转

package com.bsoft.util;

import java.io.BufferedReader;
import java.io.Reader;
import java.io.StringReader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;
import javax.sql.rowset.serial.SerialBlob;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.xml.sax.InputSource;

/**
 * 
 * 转换工具类
 *
 * 2018-03-26
 * Clob和String互转
 * Blob和String互转
 * String和Document互转
 */
public class ToolsUtils {
    
    private static final Log logger = LogFactory.getLog(ToolsUtils.class);
    
    /**
     * 
     * blob大字段转为String
     * @param o
     * @return str
     * 
     */
    public static String BlobToString(Object o) {  
        
        String str = "";  
        byte[] inbyte = null;  
        if(o instanceof Blob){ 
            
            Blob blob = (Blob) o;  
            if ( null != blob    ) {  
                try {
                    inbyte = blob.getBytes(1, (int) blob.length());
                } catch (SQLException e) {
                    logger.error(e.getMessage(),e);
                }  
            }  
            str = new String (inbyte);  
        }  
        
        return str;  
        
    }  
    /**
     * 
     * Clob大字段转为String
     * @param o
     * @return str
     * 
     */
    public static String ClobToString(Object o) {  
        
        
        String content = "";
        try{
            //object为从数据库中取出的CLOB类型的字段  
            Clob clob = (Clob) o;  
            content = clob.getSubString((long)1,(int)clob.length());
        } catch (SQLException e) {
            logger.error(e.getMessage(),e);
        }
        return content;  
        
        
    }
    /**
     * 
     * String转为blob大字段
     * @param str
     * @return blob
     * 
     */
    public static Blob stringToBlob(String blobStr) {
        
        Blob b = null;
        try {
            b = new SerialBlob(blobStr.getBytes("UTF-8"));
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
        } 
    
        return b;  
    }
    // Clob类型转换成String类型  
    public static String clobToString(final Clob object) {  
          
        if (object == null) {  
            return null;  
        }  
          
        Reader is = null;  
        try {  
            is = object.getCharacterStream();  
        } catch (Exception e) {  
            logger.error(e.getMessage(),e);
        }  
        BufferedReader br = new BufferedReader(is);  
      
        String str = null;  
        try {  
            str = br.readLine();    // 读取第一行  
        } catch (Exception e) {  
            logger.error(e.getMessage(),e);
        }  
        StringBuffer sb = new StringBuffer();  
        while (str != null) {    // 如果没有到达流的末尾,则继续读取下一行  
            sb.append(str);  
            try {  
                str = br.readLine();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
        return sb.toString();  
        
    }  
      
    // String类型转换成Clob类型  
    public static Clob stringToClob(final String string) {  
      
        if(null == string || string.trim().length() == 0){  
            return null;  
        }  
        java.sql.Clob c = null;
        try {
            c = new javax.sql.rowset.serial.SerialClob(string.toCharArray());
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
        }
        return  c;  
    }  
    /***
    * 将Document对象转换成String
    * @param document
    * @return
    */
    public String xmlToString(Document document) {
        
        return  document.asXML();
        
    }
  /**
    * 将String对象转换成Document
    * @param document
    * @return
    */
    public static Document stringToXml(String  xmlStr) {
        // 字符串转XML 
        
        StringReader sr = new StringReader(xmlStr); 
        InputSource is = new InputSource(sr); 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
        DocumentBuilder builder;
        Document doc = null;
        try {
            builder = factory.newDocumentBuilder();
            doc = (Document) builder.parse(is); 
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
        } 
        return doc;
        
    }
    public static void main(String[] args) {
        String blobStr = "<?xml version='1.0' encoding='UTF-8'?>"
                + "<dic><area code='110101' name='X1区' />"
                + "<dic><area code='110102' name='X2区' />"
                +"</dic>";  
        System.out.println( stringToXml(blobStr) );
    }  
}

备注:hibernate配置实体类entity.hbm.xml
<property name="content2" type="java.sql.Clob" ><column name="content2"   ></column></property>

<property name="content" type="java.sql.Blob" ><column name="content"   ></column></property>

 

转载于:https://my.oschina.net/cs20160712/blog/3012419

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值