JdbcTemplate 操作Oracle Blob
Posted YSHY
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JdbcTemplate 操作Oracle Blob相关的知识,希望对你有一定的参考价值。
1:增加操作
public int addTest(TestVo tv) { byte bz[] = tv.getBz().getBytes(); LobHandler lobHandler = new DefaultLobHandler(); String sql = "insert into test(name,age,bz) values(?,?,?)"; return jdbcTpl.execute(sql,new AbstractLobCreatingPreparedStatementCallback(lobHandler){ @Override protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException { ps.setString(1,tv.getName()); ps.setInt(2,tv.getAge()); lobCreator.setBlobAsBytes(ps,3,bz); } }); }
2:查询操作
public List<TestVo> getTestList() { String sql = "select name,age,bz from test"; return jdbcTpl.query(sql,new Object[]{},new RowMapper<TestVo>(){ @Override public TestVo mapRow(ResultSet rs, int rowNum) throws SQLException { TestVo tv =new TestVo(); tv.setName(rs.getString("name")); tv.setAge(rs.getInt("age")); InputStream is = rs.getBlob("bz").getBinaryStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); int len = 0; try { while((len=is.read())!=-1){ out.write(len); } tv.setBz(Base64Utils.encodeToString(out.toByteArray())); } catch (IOException e) { e.printStackTrace(); } finally { try { if(null!=out){ out.close(); } } catch (IOException e) { e.printStackTrace(); }finally { try { if(is!=null){ is.close(); } } catch (IOException e) { e.printStackTrace(); } } } return tv; } }); }
以上是关于JdbcTemplate 操作Oracle Blob的主要内容,如果未能解决你的问题,请参考以下文章
在 Oracle 中使用 query() 方法删除 Spring JdbcTemplate
spring jdbcTemplate insert插入Oracle数据库后返回当前主键id
Oracle SQL 查询在 JdbcTemplate 和 SimpleJdbcTemplate 中花费的时间太长