扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:陈雄华 来源:Impress Watch中文站 2007年10月13日
关键字:
在本页阅读全文(共5页)
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 {
int postId = rs.getInt(1);
① 以二进制数组方式获取 BLOB 数据。
byte[] attach = lobHandler.getBlobAsBytes(rs, 2);
Post post = new Post();
post.setPostId(postId);
post.setPostAttach(attach);
return post;
}
});
}
|
…
public void getAttach(final int postId,final OutputStream os){ ① 用于接收 LOB 数据的输出流
String sql = "SELECT post_attach FROM t_post WHERE post_id=? ";
getJdbcTemplate().query(
sql, new Object[] {postId},
new AbstractLobStreamingResultSetExtractor() { ② 匿名内部类
③ 处理未找到数据行的情况
protected void handleNoRowFound() throws LobRetrievalFailureException {
System.out.println("Not Found result!");
}
④ 以流的方式处理 LOB 字段
public void streamData(ResultSet rs) throws SQLException, IOException {
InputStream is = lobHandler.getBlobAsBinaryStream(rs, 1);
if (is != null) {
FileCopyUtils.copy(is, os);
}
}
}
);
}
|
package com.baobaotao.domain;
…
import javax.persistence.Basic;
import javax.persistence.Lob;
import javax.persistence. Column;
@Entity(name = "T_POST")
public class Post implements Serializable {
…
@Lob ①-1 表示该属性是 LOB 类型的字段
@Basic(fetch = FetchType.EAGER) ①-2 不采用延迟加载机制
@Column(name = "POST_TEXT", columnDefinition = "LONGTEXT NOT NULL") ①-3 对应字段类型
private String postText;
@Lob ②-1 表示该属性是 LOB 类型的字段
@Basic(fetch = FetchType. LAZY) ②-2 采用延迟加载机制
@Column(name = "POST_ATTACH", columnDefinition = "BLOB") ②-3 对应字段类型
private byte[] postAttach;
…
}
|
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。