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等,以及其他的文件.为了在数据 ...
随机推荐
- 由获取子元素的方法find和children所获
html代码如下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...
- iReport使用教程
http://www.blogjava.net/keweibo/articles/239492.html 原创出处 http://blog.163.com/liushuo216@126/blog/st ...
- POJ 3449 Geometric Shapes
判断两个多边形是否相交,只需判断边是否有相交. 编码量有点大,不过思路挺简单的. #include<cstdio> #include<cstring> #include< ...
- Java的JDBC事务详解
Java的JDBC事务详解 分类: Hibernate 2010-06-02 10:04 12298人阅读 评论(9) ...
- Linux中cat、more、less、tail、head命令的区别
一.cat 显示文件连接文件内容的工具 cat 是一个文本文件(查看)和(连接)工具,通常与more搭配使用,与more不同的是cat可以合并文件.查看一个文件的内容,用cat比较简单,就是cat后面 ...
- MySQL的mysql_insert_id和LAST_INSERT_ID
摘要:mysql_insert_id和LAST_INSERT_ID二者作用一样,均是返回最后插入值的ID 值 1 mysql_insert_id 一.PHP获取MYSQL新插入数据的ID mysql ...
- sencha cmd常用命令汇总
一.sencha generate:自动生成项目或者代码 1.sencha generate app 项目名称 生成路径 :生成一个新的extjs项目 注明:以上命令会从官网下载试用版本的ext代码到 ...
- matlab获取向量中出现次数最多的元素
向量X 1. tabulate(X) 返回一个矩阵:第一列为元素值,第二列为相应元素出现个数,第三列为相应元素个数占所有元素个数百分比 table = tabulate(X); %获取出现次数最多的元 ...
- iOS开发——UITableView(未完,待续...)
1.让tableview的自定义cell,自动计算高度. self.tableView.estimatedRowHeight = 44.0; self.tableView.rowHeight = UI ...
- [转]tar 分包压缩与合并
要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令: tar cjf - logs/ |split -b 1m - logs.tar.bz2. 完成后会产生下列文件: logs.ta ...