mysql blob 结果获取 预处理_jdbcTemplate获取mysql的blob

java使用jdbcTemplate操作mysql数据库,遇到blob字段,正常读取出来是blob的地址,而不是blob的内容。

下面采用2中方式读取blob的内容:

1、以二进制数组形式读取blob,适用于文本数据

public void testJdbc()

{

ApplicationContext ctx = new ClassPathXmlApplicationContext("restlet-servlet.xml");

JdbcTemplate jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");

String sql = "select * from violation_redis t where t.id < 10";

final LobHandler lobHandler=new DefaultLobHandler();

@SuppressWarnings("unchecked")

List> list = jdbcTemplate.query(sql,new RowMapper(){

public Object mapRow(ResultSet rs, int rowNum) throws SQLException

{

//以二进制的数组方式获得Blob数据,第二个参数3是指blob字段在结果集的位置

byte[] attach = lobHandler.getBlobAsBytes(rs, 3);

//非blob子弹获取

String key = rs.getString("vio_key");

String strAttach = new String(attach);

p(key + "==" + strAttach);

Map map = new HashMap();

map.put("vio_key", key);

map.put("vio_info", strAttach);

return map;

}

});

p(list);

}

2、流模式读取blob:

public void getBlob(OutputStream  out)

{

String sql = "select * from violation_redis t where t.id < 10";

final LobHandler lobHandler=new DefaultLobHandler();

List> list = jdbcTemplate.query(sql,new RowMapper(){

public Object mapRow(ResultSet rs, int rowNum) throws SQLException

{

//以二进制的数组方式获得Blob数据

InputStream is = lobHandler.getBlobAsBinaryStream(rs, 2);

if(is != null){

//利用spring的工具类将输入流的数据复制到输出流中

FileCopyUtils.copy(is, out);

}

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值