springboot-mongodb实体类映射注解

参考地址:https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mapping-usage
spring-data-mongodb中的实体映射是通过MongoMappingConverter这个类实现的。它可以通过注解把java类转换为mongodb的文档。

@Document - 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
如:@Document(collection=“mongodb”) mongodb对应表

@CompoundIndexes和@CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。br/>如:@CompoundIndexes({
//联合索引 name 索引名称 、def 索引字段、parameter1升序、parameter3降序
@CompoundIndex(name = "publishDate_informationId",def = "{'parameter1':1,'parameter3':-1}")
备注:def参数可以定义复合索引的字段及排序方向

@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。

@Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。
如:
//创建单字段索引(默认ASCENDING 升序、DESCENDING 降序)
@Indexed(direction = DESCENDING)
private Long parameter1;
br/>备注:direction参数可以指定排序方向,升或降序
@Field--对象属性对应mongodb的字段的名字映射,如果一致,则无需该注解
如:
br/>//修改映射到数据库中的名称
@Field("parameter2_")
private String parameter2;

@DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。br/>//关联其他集合(不添加此注释时List将会保存具体的实体值,而添加了此注释List保存的是关联集合的id)
@DBRef
private List<EntityTest1> parameter5;
@Transient - 映射忽略的字段,该字段不会保存到mongodb;只作为普通的javaBean属性
br/>@Transient
private Integer parameter6;

@GeoSpatialIndexed - 声明该字段为地理信息的索引。

@PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据

//声明构造函数,用于实例化查询结果数据
    @PersistenceConstructor
    public EntityTest(Long parameter1, String parameter2, Date parameter3, Integer parameter4,  List<EntityTest1> parameter5) {
     this.parameter1 = parameter1;
     this.parameter2 = parameter2;
     this.parameter3 = parameter3;
     this.parameter4 = parameter4;
     this.parameter5 = parameter5;
  }

参考地址:https://www.liangzl.com/get-article-detail-37842.html

猜你喜欢

转载自blog.51cto.com/1929297/2633767