Clob 字段转String

问题:

  在项目上,有大文本文档,需要存入clob 字段,如何取出clob 字段来? 应用的Mybatis框架

 

解决思路:

 第一: 若是能保证数据量小于4000的话, to_char(clob字段)  是一个非常简单省事的方案;

 第二:若是字段长度不能固定,肯定有大于4000 的数据量,这个时候,可以写一个实体类,

            然后 string 字段,然后get set操作;默认生成就可以;【也可以解决问题】;

第三: 就是需要写一个类,专门去做clob 转字符串处理;【这里着重讲解这个】

 

 

解决方案:

首先写这个类

public class OracleClob2String {

	public static String ClobToString(Clob clob) throws SQLException, IOException {

		String reString = "";
		Reader is = clob.getCharacterStream();// 得到流
		BufferedReader br = new BufferedReader(is);
		String s = br.readLine();
		StringBuffer sb = new StringBuffer();
		while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
			sb.append(s + "\n");
			s = br.readLine();
		}
		reString = sb.toString();
		return reString;
	}

}

第二:在service层对获取的list<map<string,object>> 进行clob 转 string 

  需要注意的是:list<map<string,object>> 这里必须事object 接收信息,不能是string,

public List<Map<String, Object>> getTzgglist(Map<String, String> map) {
		List<Map<String, Object>> list = Dao.getTzggList(map);
		for (Map<String, Object> tz : list) {
			try {
				tz.put("ggnr",OracleClob2String.ClobToString((Clob)tz.get("ggnr")));
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		return list;
	}

完成任务收工~!

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值