mybatis读取oralce数据库字段是clob类型两种方法

一、用流的方法将clob转为String类型 (要记的将流关闭)
@Override
    public Map<String, Object> queryreviewbaseerrorList(Map<String, Object> map) {
        Map<String, Object> mapData = new HashMap<>();
        List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
        int reviewcode=Integer.parseInt(map.get("reviewcode").toString());
        list = DataReviewMapper.queryreviewbaseerrorList(map);
        for (Map<String, Object> obj : list) {  
            Clob sc = (Clob) obj.get("TOPOGEOMETRY");
            if(sc!=null){
            String TOPOGEOMETRY = null;
            try {
                TOPOGEOMETRY = ClobToString(sc);
            } catch (SQLException | IOException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            obj.remove("TOPOGEOMETRY");
            obj.put("TOPOGEOMETRY", TOPOGEOMETRY); 
            }
        }  
        PageInfo pInfo = new PageInfo(list);
        mapData.put("code", 0);
        mapData.put("msg", "");
        mapData.put("data", list);
        mapData.put("count", pInfo.getTotal());
        return mapData;
    }
    public String ClobToString(Clob sc) throws SQLException, IOException {  
        String reString = "";  
        Reader is = sc.getCharacterStream();// 得到流  
        BufferedReader br = new BufferedReader(is);  
        String s = br.readLine();  
        StringBuffer sb = new StringBuffer();  
        while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING  
            sb.append(s);  
            s = br.readLine();  
        }  
        reString = sb.toString();  
        return reString;  
    }
二、使用ClobProxyImpl类来解决(比较好)
    Map<String,Object> map = clubGroMapper.queryClueGroupDetail(map);
    ClobProxyImpl disOrgNoProxy = (ClobProxyImpl)map.remove("distributeOrgNo");//此字段在oracle中为clob类型
    String distributeOrgNo = null;
    if(disOrgNoProxy != null){
        Clob rawClob = disOrgNoProxy .getRawClob();
        distributeOrgNo = rawClob.getSubString(1,(int)rawClob.length());
    }
    map.put("distributeOrgNo",distributeOrgNo);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值