JdbcTemplate 操作Oracle Blob

时间:2022-01-23 08:46:35

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;
}
});
}