在JdbcTemplate中处理Blob和Clob类型的数据,可以通过以下步骤进行:
- 添加Maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
- 定义数据源和JdbcTemplate:
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource(url, username, password);
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
- 编写方法读取Blob和Clob数据:
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public byte[] getAvatar(int id) {
return jdbcTemplate.queryForObject("SELECT avatar FROM user WHERE id = ?",
new Object[]{id},
(rs, rowNum) -> rs.getBytes("avatar"));
}
public String getDescription(int id) {
return jdbcTemplate.queryForObject("SELECT description FROM user WHERE id = ?",
new Object[]{id},
(rs, rowNum) -> rs.getString("description"));
}
}
- getAvatar()方法使用
rs.getBytes("avatar")
读取Blob类型的avatar字段。 - getDescription()方法使用
rs.getString("description")
读取Clob类型的description字段。
- 在Service层调用:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public byte[] getAvatar(int id) {
return userDao.getAvatar(id);
}
public String getDescription(int id) {
return userDao.getDescription(id);
}
}
- 在Controller层接收请求并返回结果:
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/avatar/{id}")
public ResponseEntity<byte[]> getAvatar(@PathVariable int id) {
byte[] avatar = userService.getAvatar(id);
return ResponseEntity.ok(avatar);
}
@GetMapping("/description/{id}")
public ResponseEntity<String> getDescription(@PathVariable int id) {
String description = userService.getDescription(id);
return ResponseEntity.ok(description);
}
}