使用DBUtils获取Blob类型数据
来源:互联网 发布:江国香织 知乎 编辑:程序博客网 时间:2024/06/06 07:27
DBUtils的三个核心类
DBUtils
- 介绍:连接数据库对象—-jdbc辅助方法的集合类,线程安全
- 功能:控制连接,控制书屋,控制驱动加载额一个类。
- 构造函数:
DbUtils()
- QueryRunner
- 介绍:使用插拔策略执行SQL查询,线程安全。
- 构造函数:
QueryRunner()QueryRunner(boolean pmdKnownBroken)QueryRunner(DataSource ds)QueryRunner(DataSource ds,boolean pmdKnownBroken)
- ResultSetHandler
- 介绍:封装数据的策略对象。将封装结果集中的数据,转换到另一个对象
- 方法:
handle(ResultSet rs)
ResultSetHandler实现类介绍
ArrayHandler :将ResultSet中第一行的数据转化成对象数组ArrayListHandler :将ResultSet中所有的数据转化成List,List中存放的是Object[]BeanHandler :将ResultSet中第一行的数据转化成类对象BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象ColumnListHandler:将ResultSet中某一列的数据存成List,List中存放的是Object对象KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据MapHandler :将ResultSet中第一行的数据存成Map映射MapListHandler :将ResultSet中所有的数据存成List。List中存放的是MapScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
上述这些DBUtils提供的实现类,如果无法满足需求,也可以自己实现。
重新实现ResultSetHandler
如果表字段中有Blob类型,直接用DBUtils提供的MapListHandler,读出来的数据是乱码,这个时候可以重写MapListHandler。先判断字段类型,如果是BLOB类型,则转成String。如果还有其他复杂类型,也可以加入判断,并转化。
public class MapListHandler extends AbstractListHandler<Map<String, Object>>{ @Override protected Map<String, Object> handleRow(ResultSet rs) throws SQLException { // TODO Auto-generated method stub Map<String, Object> result = new CaseInsensitiveMap(); ResultSetMetaData rsmd = rs.getMetaData(); int cols = rsmd.getColumnCount(); for (int i = 1; i <= cols; i++) { //通过ResultSetMetaData类,可判断该列数据类型// System.out.println("columnName:"+rsmd.getColumnName(i)+"-----columnTypeName:"+rsmd.getColumnTypeName(i)); if(rsmd.getColumnTypeName(i).equals("BLOB")){ Blob bb = rs.getBlob(i); if(bb!=null) { byte[] b = bb.getBytes(1, (int)bb.length()); String blobStr = ""; try { blobStr = new String(ZipUtil.deflateUncompress(b), "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //将结果放到Map中 result.put(rsmd.getColumnName(i), blobStr); } }else { //如果不是BLOB类型,则直接放进Map result.put(rsmd.getColumnName(i), rs.getObject(i)); } } return result; }}
阅读全文
0 0
- 使用DBUtils获取Blob类型数据
- 使用DBUtils获取Blob类型数据
- 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据
- Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
- 处理Blob类型数据:
- 关于apache的commons-dbutils如何读取blob类型
- 使用 BLOB 类型字段
- 使用java JDBC方式操作oracle blob类型数据
- 使用java JDBC方式操作oracle blob类型数据
- 使用JDBC4.0处理Oracle中BLOB类型的数据
- 如何处理BLOB类型数据之三:使用Servlet在页面上显示BLOB中的图片
- jdbc操作BLOB类型数据
- 插入,查询Blob类型数据
- MySQL BLOB类型数据操作
- MySQL BLOB类型数据操作
- MySQL存储 BLOB 类型数据
- Oracle处理Blob类型数据
- Matlab处理blob类型数据
- stderr: error: bad signature fatal: index file corrupt
- 12.14课堂笔记、课后作业、学习心得
- mysql CONCAT及Format及ifnull
- 文章标题
- Linux——iscsi共享硬件
- 使用DBUtils获取Blob类型数据
- angular学习
- OPENCV 通过Mat访问每个像素
- ionic刷新
- Fastjson SerializerFeature详解
- RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
- java线程---基础(二)
- cmd进入指定盘符
- Delphi-字符串函数