0%

spring-boot-mongodb

Spring boot 整合 mongodb

资料链接:Spring Data MongoDB - Reference Documentation

整合步骤

第一步: 引入依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

第二步: 环境配置 application.yml

1
2
3
4
spring:
data:
mongodb:
uri: mongodb://chenpeng:chenpeng@localhost:27017/test01

第三步: 创建需要映射的实体类

1
2
3
4
5
6
7
8
9
10
11
12
@Document(value = "demo") // 标识要持久化到 MongoDB 的集合名称。
public class Order {
@Id //划定一个标识符。
private String id;

@Field("customer") // 用于定义文档字段。
private String customer;

private String type;
private Collection<Item> items = new LinkedHashSet<Item>();
// getters and setters
}

第四步:使用 MongoTemplate 进行数据库操作

1
2
3
4
5
6
7
8
9
10
@Repository
public class OrderMapperImpl implements OrderMapper {
@Resource
private MongoTemplate mongoTemplate;

@Override
public Order save(Order order) {
return mongoTemplate.save(order); // 将一个 order 对象持久化到 mongodb 中。
}
}

扩展

实体类映射注解

  • @Id: 标记用于标识目的的字段,在字段级别应用。
  • @Document: 指示该类是映射到数据库的候选者。 可指定集合名称,再类级别使用。
  • @DBRef: 声明类似于关系数据库的关联关系。只关联,并无级联操作。
  • @Indexed: 标识索引字段。
  • @CompoundIndex: 声明符合索引。应用在类型级别。
  • @GeoSpatialIndexed: 标识地理信息索引。
  • @TextIndexed: 标识文本索引。
  • @Language: 设置文本索引的语言覆盖属性。
  • @Transient: 所有私有属性默认映射到 mongodb 文档,这个注解标识该字段不会保存到mongodb,只作为普通的javaBean属性。
  • @PersistenceConstructor: 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据
  • @Value: 此注解为 Spring 框架注解。 可以用于构造函数参数,可以使用 Spring 表达式语言语句来转换在数据库中检索到的键值,然后再将其用于构造域对象。为了引用给定文档的属性,必须使用如下表达式:@Value("#root.myProperty") 其中 root 指的是给定文档的根。
  • @Field: 对象属性对应mongodb的字段的名字映射,如果一致,则无需该注解
  • @Version: Applied at field level is used for optimistic locking and checked for modification on save operations. The initial value is zero which is bumped automatically on every update.
  1. api 扩展
  2. web 项目高可维护性代码实现

问题合集