扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:陈雄华 来源: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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者