2016-08-11 6 views
1

Я пытаюсь использовать Spring JDBCTemplate для чтения данных BLOB из таблицы.Как читать данные Blob в String Object с использованием Spring JDBCTemplate

List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql); 

for(Map<String, Object> row:rows){ 
    row.get("OPERATION_NAME"); 
    row.get("REQUEST_MESSAGE"); // this is blob 
} 

Как я могу прочитать blob в объект Java String?

ответ

1

Это, казалось, отлично работает -

LobHandler lobHandler = new DefaultLobHandler(); 
List<FrontendData> frontEndDataList = jdbcTemplate.query(getResponseQuery(sessionId), new RowMapper() { 
      @Override 
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException { 
       // TODO Auto-generated method stub 

       FrontendData frontEndData = new FrontendData(); 
       String operationName = rs.getString("OPERATION_NAME"); 
       frontEndData.setApiName(operationName); 
       byte[] requestData = lobHandler.getBlobAsBytes(rs,"RESPONSE_MESSAGE"); 
       frontEndData.setResponse(new String(requestData)); 


       return frontEndData; 
      }}); 
3

Вы можете попробовать получить blob из базы данных, как показано ниже.

String retrieveBlobAsString = null; 
Blob b = row.get("REQUEST_MESSAGE");//cast with (Blob) if required. Blob from resultSet as rs.getBlob(index). 
InputStream bis = b.getBinaryStream(); 
ObjectInputStream ois = new ObjectInputStream(bis); 
retrieveBlobAsString = (String) ois.readObject(); 
+0

Благодарности Адитья Сарма. Я попробую и обновится. –

+0

У меня получилось следующее исключение, когда я попытался сбрасывать с помощью Blob - Caused by: java.lang.ClassCastException: [B не может быть передан в java.sql.Blob –

+0

Я думаю, нам нужно всего лишь отбрасывать, когда мы используем тип данных oracle BLOB. Но так как мы используем Blob из пакета java.sql, я не думаю, что требуется актерский состав. Может быть, вы можете попробовать удалить бросок и посмотреть, работает ли он? – Aditya