spring定义了一个以统一的方式操作各种数据库的Lob类型数据的LobCreator(保存的时候用),同时提供了一个LobHandler为操作二进制字段和大文本字段提供统一接口访问。
举例,例子里面的t_post表中post_text字段是CLOB类型,而post_attach是BLOG类型:
String sql = " INSERT INTO t_post(post_id,user_id,post_text,post_attach)"
+ " VALUES(?,?,?,?)";
getJdbcTemplate().execute(
sql,
new AbstractLobCreatingPreparedStatementCallback(
this.lobHandler) {
protected void setValues(PreparedStatement ps,
LobCreator lobCreator) throws SQLException {
ps.setInt(1, incre.nextIntValue());
ps.setInt(2, post.getUserId());
//存储文件流,text文本之类
//存储图片用lobCreator.setBlobAsBinaryStream(ps, 3, inputstream,inputstream.avaliable)
lobCreator.setClobAsAsciiStream(ps, 3, inputstream,inputstream.avaliable);
lobCreator.setClobAsAsciiStream(ps, 4, inputstream,inputstream.avaliable);
}
});
}
}
读取BLOB/CLOB块,举例:
public List getAttachs(final int userId){
String sql = "SELECT post_id,post_attach FROM t_post where user_id =? and post_attach is not null";
return getJdbcTemplate().query(
sql,new Object[] {userId},
new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Post post = new Post();
int postId = rs.getInt(1);
byte[] attach = lobHandler.getBlobAsBytes(rs, 2);
post.setPostId(postId);
post.setPostAttach(attach);
return post;
}
});
}
Spring 让 LOB 数据操作变得简单易行 另一篇介绍
http://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/
分享到:
相关推荐
这篇博客主要探讨了如何使用Spring处理CLOB(Character Large Object)和BLOB(Binary Large Object)这两种大数据类型的字段。CLOB通常用于存储大文本数据,如文章、报告等,而BLOB则用于存储二进制大数据,如图片...
使用JdbcTemplate,我们可以编写SQL查询或更新语句,并利用其方法执行它们,处理结果集。 2. **PreparedStatement**:在Spring中,通常使用PreparedStatement来插入或更新包含BLOB字段的记录。预编译的SQL语句可以...
它可以处理各种数据类型,包括MySQL特有的BLOB和CLOB等。同时,JdbcTemplate也支持MySQL的存储过程调用,只需使用`call`方法并传入CallableStatementCreator即可。 除了基本的查询和更新,JdbcTemplate还提供了一些...
处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中创建 ...
在Spring框架中,LOB(Large Object)字段通常用于存储大数据,如BLOB(Binary Large Object)用于二进制数据,如图片或文档,CLOB(Character Large Object)用于字符数据,如长文本。本篇文章将深入探讨如何在...
11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和行集 11.4.1 自增键的...
- **二进制数据处理**:探讨了Spring JDBC中处理二进制数据的方法,如BLOB和CLOB类型。 - **其他JdbcTemplate实现**:概述了除了默认的JdbcTemplate之外,还有哪些其他的实现可供选择。 ### 第三章:使用Spring与...
处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中创建 ...
11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和行集 11.4.1 自增键的...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
- **Blob,clob映射**: 对大文本或二进制数据的映射。 - **查询**: - **get,load,延迟加载**: 提供不同的获取对象的方法,支持懒加载。 - **Session的常用方法**: 包括openSession、close、save、update等。 - *...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
在dbking中,所有的数据库数据只有五种数据类型,String、Number(BigDecimal)、Timestamp、Clob(String)、Blob(byte[]),经过反复测试后,我们会例出各种数据库数据类型到这五种类型的映射表,当然我们也有...
- **Blob/clob映射**:处理大文本和二进制数据。 - **查询(get, load, 延迟加载)**:获取对象的不同方式及其特点。 - **Session的常用方法**:如`save()`、`update()`、`delete()`等。 - **对象在Hibernate中的...
`JdbcTemplate`是Spring框架中用于简化JDBC编程的一种工具,它封装了大量的通用数据库操作。 - **模板设计模式优化DAO**: `JdbcTemplate`简化了异常处理、资源管理等操作。 - **策略设计模式优化DAO**: 通过定义...