这里我们用到的是spring-data中一个集成mongodb的项目,首先在maven中添加对它的依赖,这里我用的是1.0.0.M5版本
然后是配置文件
MongoMappingConverter这个类实现的。它可以通过注释把 java类转换为mongodb的文档。 @Document - 把一个java类声明为mongodb的文档,可以通 过collection参数指定这个类对应的文档。 @DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。 @Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。 @CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。 @GeoSpatialIndexed - 声明该字段为地理信息的索引。 @Transient - 映射忽略的字段,该字段不会保存到 mongodb。 @PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。 以下引用一个官方文档的例子: Person类
与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用Repository的功能,先继承MongoRepository<T, TD>接口,其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。之后在service中注入该接口就可以使用,无需实现里面的方法,spring会根据定义的规则自动生成。 例:
例:
GreaterThan(大于) LessThan(小于) Between(在...之间) IsNotNull, NotNull(是否非空) IsNull, Null(是否为空) Like(模糊查询) (No keyword) findByFirstname(String name) Not(不包含) Near(查询地理位置相近的) Within(在地理位置范围内的) Within(在地理位置范围内的) 尽管以上查询功能已经很丰富,但如果还不能满足使用情况的话可以用一下方法---基于mongodb原本查询语句的查询方式。
注释Query里面的就是mongodb原来的查询语法,我们可以定义传进来的查询参数,通过坐标定义方法的参数。 还可以在后面指定要返回的数据字段,如上面的例子修改如下,则只通过person表里面的name和age字段构建person对象。
|
spring-data 集成mongodb
最新推荐文章于 2025-07-04 09:19:38 发布