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的更多相关文章

  1. jdbc,mysql 数据库BLOB返回值 [B 的问题

    当jdbc返回值类型对应的java类型是[B,那就表示返回值的类型比较模糊难以区分: BLOB类型是mysql数据库常用来存储,但是通过getBlob()方法获取值得时候会报错: 错误信息: java ...

  2. PHP获取MySql新增记录ID值的方法

    今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法 ...

  3. php实例源码之获取mysql表中所有行和列

    本文章向大家介绍php获取mysql表中所有行和列的源码,主要使用到mysql_num_rows和mysql_fetch_row等php的数据库操作函数,该实例有助于大家熟悉PHP mysql数据库编 ...

  4. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  5. PHP操作Mysql中间BLOB场

    1.MySQL在BLOB字段类型 BLOB场的类型用于存储二进制数据. MySQL在.BLOB它是一种类型的一系列.含有:TinyBlob.Blob.MediumBlob.LongBlob.大小上不同 ...

  6. 获取MySql每一列的数据类型和长度默认值等信息

    如何获取MySql表中各个列的数据类型? show columns from tablename 返回结果如下: id    int(11)     NO  PRI         auto_incr ...

  7. 定时获取MySQL库的大小

    定时获取MySQL库的大小 获取数据库单个库的大小命令 [root@admin ~]# cat db_size.txt mysql -h 192.8.1.1 -uUSER -pPASSWORD -e' ...

  8. PHP获取MySql新增记录ID值的3种方法

    From: http://www.jb51.net/article/51473.htm 这篇文章主要介绍了PHP获取MySql新增记录ID值的3种方法,一般使用PHP自带函数mysql_insert_ ...

  9. MySQL的blob类型

    MySQL中的Blob类型 MySQL中存放大对象的时候,使用的是Blob类型.所谓的大对象指的就是图片,比如jpg.png.gif等格式的图片,文档,比如pdf.doc等,以及其他的文件.为了在数据 ...

随机推荐

  1. 电池和Adapter切换电路改进实验(转)

    源:电池和Adapter切换电路改进实验 目的:很多单电池的机器在大负载的情况下,如把背光开到最亮,运行3D游戏,此时拔DC电源很容易出现机器死机,或花屏现象: 原因:Q5的导通时间不够,希望通过G极 ...

  2. Mysql update语句赋值嵌套与在表列中数据后面增加数据

    1.Mysql update语句赋值嵌套select  点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id&g ...

  3. kafka 集群部署 多机多broker模式

    kafka 集群部署 多机多broker模式 环境IP : 172.16.1.35   zookeeper   kafka 172.16.1.36   zookeeper   kafka 172.16 ...

  4. java war 打包、解压命令(转载)

    经常将工程打包成war包,打包如下: // 将当前目录打包成war包 jar   cvf   temp.war   */  . 命令格式: java cvf 打包文件名称 要打包的目录 打包文件保存路 ...

  5. (简单) POJ 2240 Arbitrage,SPFA。

    Description Arbitrage is the use of discrepancies in currency exchange rates to transform one unit o ...

  6. [iOS Animation]-CALayer 显示动画

    显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...

  7. struts2拦截器-自定义拦截器,放行某些方法(web.xml配置)

    一.web.xml配置 <filter> <filter-name>encodingFilter</filter-name> <filter-class> ...

  8. radiobutton设置样式

    单选题里会用到radiobutton,如果不想使用系统提供的圆圈样式,可以自定义样式,想要做成的效果就是, 使用自定义的图片替换圆圈,然后选择有4个选项的其中一个,图片上有个对勾标记, 然后如果正确选 ...

  9. android——网络操作(一)连接网络

    连接网络 一,包含许可 <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-pe ...

  10. bzoj 1036

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 11858  Solved: 4803[Submit ...