先show一下用法
@CreatedDate private DateTime createdDate; @LastModifiedDate private DateTime lastModifiedDate; @DBRef @CascadeSave private AlarmDetails alarmDetails;
1。 先自定@CascadeSave annoation
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD}) public @interface CascadeSave { }
2。再定义listener
import java.lang.reflect.Field; import javax.inject.Inject; import org.springframework.data.annotation.Id; import org.springframework.data.mapping.model.MappingException; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener; import org.springframework.util.ReflectionUtils; @SuppressWarnings("rawtypes") public class CascadingMongoEventListener extends AbstractMongoEventListener { @Inject private MongoOperations mongoOperations; @Override public void onBeforeConvert(final Object source) { ReflectionUtils.doWithFields(source.getClass(), new ReflectionUtils.FieldCallback() { public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException { ReflectionUtils.makeAccessible(field); if (field.isAnnotationPresent(DBRef.class) && field.isAnnotationPresent(CascadeSave.class)) { final Object fieldValue = field.get(source); if (fieldValue == null) { return; } DbRefFieldCallback callback = new DbRefFieldCallback(); ReflectionUtils.doWithFields(fieldValue.getClass(), callback); if (!callback.isIdFound()) { throw new MappingException("Cannot perform cascade save on child object without id set"); } mongoOperations.save(fieldValue); } } }); } private static class DbRefFieldCallback implements ReflectionUtils.FieldCallback { private boolean idFound; public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException { ReflectionUtils.makeAccessible(field); if (field.isAnnotationPresent(Id.class)) { idFound = true; } } public boolean isIdFound() { return idFound; } } }
3。别忘了配置
<mongo:auditing/> <mongo:mongo host="${db.mongo.host}" port="${db.mongo.port}" /> <mongo:db-factory dbname="${db.mongo.name}" mongo-ref="mongo"/> <bean class="com.eifesun.monitor.web.model.mongodb.CascadingMongoEventListener" />
相关推荐
Spring Data MongoDB API。 Spring Data MongoDB 开发文档。
通过定义接口并继承Spring Data提供的MongoRepository或SimpleMongoRepository,开发人员可以自动获得基本的查询方法。例如,我们可以创建一个UserRepository接口,包含如下的方法: ```java public interface ...
- **MongoTemplate** 是 **Spring Data MongoDB** 提供的一个核心类,用于执行 MongoDB 的 CRUD 操作。 - 它提供了很多方便的方法来执行数据库操作,例如:`insert()`, `save()`, `findOne()`, `remove()`, `find()`...
标题“spring-mongo-data”指的是Spring Data MongoDB项目,这是一个Java框架,用于简化与MongoDB数据库的交互。Spring Data是Spring框架的一部分,它提供了一种声明式的方法来处理各种数据存储,包括关系型数据库和...
总的来说,`spring_mongo`项目示例展示了如何利用Spring Data MongoDB将MongoDB数据库集成到Spring Boot应用中,实现高效的数据操作。这个示例涵盖了从配置数据库到创建RESTful API的完整流程,是学习和实践Spring与...
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean"> ``` 一旦有了`MongoDBTemplate`,你就可以开始执行各种数据库操作了。比如,你可以使用`save()`方法保存一个对象到...
《Spring Data MongoDB 配置详解》 在Java开发中,Spring框架因其强大的功能和灵活性而备受推崇,而在处理NoSQL数据库如MongoDB时,Spring Data MongoDB提供了便捷的接口和抽象,使得开发者能更加专注于业务逻辑,...
本文将详细讲解如何在Spring Data MongoDB中实现自定义级联的方法。 首先,我们需要理解Spring Data MongoDB的核心组件MongoTemplate,它是用于执行MongoDB数据库操作的工具类。MongoTemplate提供了基本的CRUD操作...
综上所述,"spring集成mongo所需jar"涉及的关键知识点包括Spring Data MongoDB框架、MongoDB Java驱动、项目构建工具(如Maven或Gradle)的依赖管理以及MongoDB的集成配置和操作。通过正确引入这些jar文件并按照上述...
此外,还可以自定义方法,Spring Data会自动将其转换为相应的MongoDB查询。 3. **配置与数据源**:在Spring Boot项目中,通常在`application.properties`或`application.yml`中配置MongoDB连接信息。例如,设置`...
skip随着数据量上去,分页性能极具下降,不推荐。这里使用spring-data-mongo实现的分页,并且实现了mongodb自增id(监听器方式)、也集成了轻量级插件MongodbPlugin,有需要的可以下载看看哦~
对于那些希望了解如何使用SpringData MongoDB的开发人员来说,文档还提供了参考资料和入门指南,从如何安装和配置MongoDB到如何使用MongoTemplate以及创建自定义Repository实现等不同层次的内容都有涉及。...
### Spring-data-mongo应用知识点详解 #### 一、Spring Data MongoDB 概述 Spring Data MongoDB 是 Spring Data 项目的一部分,它提供了一套统一的数据访问抽象层,使得开发人员能够更加容易地进行数据库操作,而...
- 实现Repository接口:创建自定义的Repository接口,继承Spring Data MongoDB提供的基类,并定义所需的查询方法。 **5. 使用示例** 例如,定义一个UserRepository接口: ```java public interface ...
在Spring Data MongoDB中,开发者可以定义自定义的`Repository`接口,继承自`MongoRepository`或`CrudRepository`,并添加特定的方法来操作MongoDB数据。例如: - `findAll()`:获取所有文档。 - `findById()`:...
SpringData是Spring框架的一个重要模块,它为Java开发者提供了丰富的数据访问抽象,简化了与各种数据存储系统的交互。本资源“尚硅谷SpringData视频”旨在帮助学习者深入理解和掌握SpringData的相关知识,通过视频...
SpringData是Spring框架的一个重要模块,它为Java开发者提供了与数据存储进行交互的简便方法,涵盖了关系型数据库、NoSQL数据库、搜索引擎等多种数据访问技术。本教程“SpringData入门到精通”将引领你逐步深入...
使用自定义了时间和字符串的转换规则 存的时候 存字符串 读取的时候 转换为日期类型 但是在按时间查找的时候 也可以使用 下载后 直接运行 Test类 修改下MongodbConfiguration的mongoUrl 写的时候将时间转为字符串 ...
spring-data-mongo-1.0.0.M5.zip 11年10月25号出来的 要配合spring-data-commons-1.2.0.M2.zip使用 不然底层会报错 spring-data-commons-1.2.0.M2.zip我已经传上去了~
Spring Data MongoDB通过MongoTemplate和MongoConverter来实现对象与MongoDB文档之间的映射。MongoTemplate是操作MongoDB的主要接口,而MongoConverter则负责将Java对象转换为MongoDB文档,反之亦然。在1.4版本中,...