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

jdbctemplate怎么实现oracle分页查询

Oracle SQL 查询在 JdbcTemplate 和 SimpleJdbcTemplate 中花费的时间太长

spring jdbcTemplate 封装调用存储过程的通用方法(oracle数据库)

请问java高手,spring的jdbcTemplate是怎样调用oracle的存储过程的呢?