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<Map<String,String>> 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<String,String> map = new HashMap<String,String>();
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<Map<String,String>> 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);
}
});
}
jdbcTemplate获取mysql的blob的更多相关文章
- jdbc,mysql 数据库BLOB返回值 [B 的问题
当jdbc返回值类型对应的java类型是[B,那就表示返回值的类型比较模糊难以区分: BLOB类型是mysql数据库常用来存储,但是通过getBlob()方法获取值得时候会报错: 错误信息: java ...
- PHP获取MySql新增记录ID值的方法
今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法 ...
- php实例源码之获取mysql表中所有行和列
本文章向大家介绍php获取mysql表中所有行和列的源码,主要使用到mysql_num_rows和mysql_fetch_row等php的数据库操作函数,该实例有助于大家熟悉PHP mysql数据库编 ...
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- PHP操作Mysql中间BLOB场
1.MySQL在BLOB字段类型 BLOB场的类型用于存储二进制数据. MySQL在.BLOB它是一种类型的一系列.含有:TinyBlob.Blob.MediumBlob.LongBlob.大小上不同 ...
- 获取MySql每一列的数据类型和长度默认值等信息
如何获取MySql表中各个列的数据类型? show columns from tablename 返回结果如下: id int(11) NO PRI auto_incr ...
- 定时获取MySQL库的大小
定时获取MySQL库的大小 获取数据库单个库的大小命令 [root@admin ~]# cat db_size.txt mysql -h 192.8.1.1 -uUSER -pPASSWORD -e' ...
- PHP获取MySql新增记录ID值的3种方法
From: http://www.jb51.net/article/51473.htm 这篇文章主要介绍了PHP获取MySql新增记录ID值的3种方法,一般使用PHP自带函数mysql_insert_ ...
- MySQL的blob类型
MySQL中的Blob类型 MySQL中存放大对象的时候,使用的是Blob类型.所谓的大对象指的就是图片,比如jpg.png.gif等格式的图片,文档,比如pdf.doc等,以及其他的文件.为了在数据 ...
随机推荐
- pcap filter
今天用tshark抓包,本以为wireshark能用的filter,如“mysql”它也应该能用,其实不然:tshark -f只认识pcap filter,用-R的话,说要用-2,加上-2的话又说什么 ...
- PHP 删除非法UTF-8字符
//reject overly long 2 byte sequences, as well as characters above U+10000 and replace with ? $some_ ...
- CSS3 线型渐变
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux undelete
http://www.tldp.org/HOWTO/archived/Ext2fs-Undeletion-Dir-Struct/index.html http://www.giis.co.in/deb ...
- SpringMVC轻松学习-环境搭建(二)
基于spring2.5的采用XML配置的spring MVC项目 注:本项目全部基于XML配置.同时,集成了hibernate.采用的是:spring MVC+hibernate+spring的开发架 ...
- (简单) POJ 1961 Period,扩展KMP。
Description For each prefix of a given string S with N characters (each character has an ASCII code ...
- [Unity]Unity开发NGUI代码实现ScrollView(放大视图)
Unity开发NGUI代码实现ScrollView(放大视图) 下载NGUI包 导入NGUI3.9.1版本package 创建MainCameraScript.cs脚本 MainCameraScrip ...
- 关于LCD以及BMP和RGB565
源: 关于LCD以及BMP和RGB565
- FZU 2110 Star
简单暴力题,读入%lld会WA,%I64d能过. #include<cstdio> #include<cstring> #include<cmath> #inclu ...
- displayport
去年买了一张ATI的显卡,但是很坑爹的是显卡后面没有VGA接口,除了一个HDMI,另外两个接口不认识,后来认识了DVI,用DVI连接显示器,剩下一个接口是什么一直没管,前两天电脑清灰,感兴趣了,去查了 ...