如何使用Java

时间:2017-10-30 09:32:08

标签: java spring mongodb image spring-boot

例如:

我想存储员工详细信息,例如

private Long id;
private String Name;
private String country;

现在,我还想在MongoDB中存储一个Image和上面的数据。

在我的控制器中,我将下面的代码写成了一个片段

Employee employee2 = new Employee(); 
employee2.setEmpId(1002);
employee2.setEmpName("Dinesh Rajput");
employee2.setCountry("India");

mongoOperations.save(employee2);

员工数据在DB中创建。现在如何将图像与它一起存储。

3 个答案:

答案 0 :(得分:1)

您可以添加如下代码

lastSuccessfulBuild

it will be saved in db like this

答案 1 :(得分:1)

假设您正在使用Spring Boot,Spring Data Mongo,那么您应该考虑将Mongo的Spring Content用于内容存储部分,如下所示:

将以下依赖项添加到pom.xml

<dependency>
    <groupId>com.github.paulcwarren</groupId>
    <artifactId>spring-content-mongo-boot-starter</artifactId>
    <version>0.0.10</version>
</dependency>
<dependency>
    <groupId>com.github.paulcwarren</groupId>
    <artifactId>spring-content-rest-boot-starter</artifactId>
    <version>0.0.10</version>
</dependency>

确保应用程序上下文中存在GridFsTemplate bean。如下所示:

@Configuration
public class MongoConfig

   @Bean
   public GridFsTemplate gridFsTemplate() throws Exception {
      return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
   }
   ...

要允许内容与您的Employee实体相关联,请为其指定以下属性:

@ContentId
private String contentId;

@ContentLength 
private long contentLength = 0L;

@MimeType
private String mimeType = "text/plain";

添加商店界面:

@StoreRestResource(path="employeeImages")
public interface EmployeeImageStore extends ContentStore<Employee, String> {
}

这就是你所需要的一切。当应用程序启动时,Spring Content将看到Mongo / REST模块的依赖项,它将为GridF注入EmployeeImageStore存储的实现,以及支持完整CRUD功能的控制器实现并将这些操作映射到到底层商店界面。 REST端点将在/employeeImages下提供。

即。

curl -X PUT /employeeImages/{employeeId}将创建或更新员工的形象

curl -X GET /employeeImages/{employeeId}将获取员工的图片

curl -X DELETE /employeeImages/{employeeId}将删除员工的图片

有几个入门指南here。他们将Spring Content用于文件系统,但模块可以互换。 Mongo参考指南是here。还有一个教程视频here

HTH

答案 2 :(得分:0)

您有两种方法可以实现这一目标。

  1. 将图片保存到本地系统并在java对象中添加属性,让我们说imagePath
  2. 使用GridFS
  3. 将其存储为二进制数据

    如何使用GridFs

    的教程