Spring提供的DefaultLobHandler可以用来对lob类型的数据列进行相关的操作。如以下代码所示,image_code列的数据类型为blob,下面的代码展示了一个查询示例。
当然如果不想显示编写SQL代码来操作lob类型的列,可以通过ORM框架自身提供的映射机制来进行常规操作。如JPA标准中的 @LOB 注解。
public byte[] queryUserImage(String targetUserId) {
String sql = "SELECT image_code FROM pf_image WHERE user_id = ?";
final String BLOB_KEY = "BLOB";
@SuppressWarnings({ "unchecked", "rawtypes" })
List<Map<String, byte[]>> list = jdbcTemplate.query(sql, new Object[] { targetUserId }, new RowMapper() {
public Object mapRow(ResultSet rs, int i) throws SQLException {
Map<String, byte[]> results = new HashMap<String, byte[]>();
byte[] byteArr = lobHandler.getBlobAsBytes(rs, "image_code");
results.put(BLOB_KEY, byteArr);
return results;
}
});
return list.get(0).get(BLOB_KEY);
}
当然如果不想显示编写SQL代码来操作lob类型的列,可以通过ORM框架自身提供的映射机制来进行常规操作。如JPA标准中的 @LOB 注解。
private byte[] userImage;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "user_image", columnDefinition = "BLOB")
public byte[] getUserImage() {
return userImage;
}
本文介绍如何在Spring框架中使用DefaultLobHandler类处理LOB类型的数据列,包括使用SQL查询示例和ORM框架提供的映射机制进行操作。
1万+

被折叠的 条评论
为什么被折叠?



