Clob 字段转String

2022-08-20 13:27:18

问题:

  在项目上,有大文本文档,需要存入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;
	}

完成任务收工~!

  • 作者:DachuanDachuan
  • 原文链接:https://blog.csdn.net/qq_30125555/article/details/84323829
    更新时间:2022-08-20 13:27:18