例如:
我想存储员工详细信息,例如
private Long id;
private String Name;
private String country;
现在,我还想将图像与上述数据一起存储在 MongoDB 中。
在我的 Controller 中,我在下面编写了代码片段
Employee employee2 = new Employee();
employee2.setEmpId(1002);
employee2.setEmpName("Dinesh Rajput");
employee2.setCountry("India");
mongoOperations.save(employee2);
员工数据在数据库中创建。现在如何将图像与其一起存储。
最佳答案
假设您正在使用 Spring Boot、Spring Data Mongo 那么您应该考虑使用 Spring Content对于 Mongo 来说,内容存储部分如下所示:
将以下依赖项添加到您的 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 模块的依赖关系,并将注入(inject) GridFs 的 EmployeeImageStore 存储的实现以及支持完整 CRUD 功能和映射的 Controller 的实现这些操作深入到底层存储接口(interface)。 REST 端点将在 /employeeImages
下提供。
即
curl -X PUT/employeeImages/{employeeId}
将创建或更新员工的图像
curl -X GET/employeeImages/{employeeId}
将获取员工的图像
curl -X DELETE/employeeImages/{employeeId}
将删除员工的图像
有几个入门指南 here 。他们使用 Spring Content 作为文件系统,但模块是可以互换的。 Mongo引用指南是here 。还有教程视频here .
HTH
关于java - 如何使用 Java 将带有一些数据的图像存储在 MongoDB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47011871/