在Spring Boot中使用PostgreSQL存储图片时,你可以将图片转换为字节流(byte array)并存储到Blob字段中。以下是一个简化的例子:
- 实体类(ImageEntity.java):
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
 
@Entity
public class ImageEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @Lob
    private byte[] imageData;
 
    // 标准的getter和setter
    // ...
}
- Repository接口(ImageRepository.java):
 
import org.springframework.data.jpa.repository.JpaRepository;
 
public interface ImageRepository extends JpaRepository<ImageEntity, Long> {
}
- 服务类(ImageService.java):
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.IOException;
 
@Service
public class ImageService {
 
    @Autowired
    private ImageRepository imageRepository;
 
    public ImageEntity saveImage(MultipartFile file) throws IOException {
        ImageEntity imageEntity = new ImageEntity();
        imageEntity.setImageData(file.getBytes());
        return imageRepository.save(imageEntity);
    }
 
    public byte[] getImage(Long id) {
        ImageEntity imageEntity = imageRepository.findById(id).orElse(null);
        return imageEntity == null ? null : imageEntity.getImageData();
    }
}
- 控制器类(ImageController.java):
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
 
@RestController
@RequestMapping("/images")
public class ImageController {
 
    @Autowired
    private ImageService imageService;
 
    @PostMapping
    public ImageEntity saveImage(@RequestParam("file") MultipartFile file) throws IOException {
        return imageService.saveImage(file);
    }
 
    @GetMapping("/{id}")
    @ResponseBody
    public byte[] getImage(@PathVariable Long id) {
        return imageService.getImage(id);
    }
}
在这个例子中,我们使用了Spring Data JPA来简化数据访问层的代码。saveImage方法将MultipartFile转换为字节流并保存到数据库中,而getImage方法则从数据库中检索图片数据并以字节流的形式返