使用起来就简单了。
还有像executeCommand支持复杂操作的接口。
使用Criteria可以构造Query,支持大于、小于、in等查询条件,类似于Hibernate的Criteria。
@Service("myService")
public class TestService {
private Logger log = Logger.getLogger(getClass());
private MongoTemplate mongoTemplate;
public List<User> findAll(String collectionName) {
return mongoTemplate.findAll(User.class, collectionName);
}
public void save(String collectionName, List<User> items) {
if (StringUtils.isNotEmpty(collectionName)) {
mongoTemplate.dropCollection(collectionName);
mongoTemplate.insert(items, collectionName);
} else {
log.error("name does not exist.");
}
}
public void delete(String collectionName) {
if (StringUtils.isNotEmpty(collectionName)) {
mongoTemplate.dropCollection(collectionName);
} else {
log.error("name does not exist.");
}
}
@Autowired
public void setMongoTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
}
但是说实话,像涉及到DBObject、Query这样的接口,一般使用起来都比较麻烦,我之前使用Hibernate的Criteria很有感触,所以比较反感使用这些。
比如,有一个深层嵌套的关联,User-Org-Address-postcode。
要按邮编和电话筛选,要用and把两个eq连接起来,但是使用eq之前,你还得判断中间的Org,Address是否为空,否则你调xxx.xxx.xxx.getPostCode会抛空指针。
这样写出来的代码真像某地的护城河,又臭又长。
所以在类似的api里写复杂查询的缺点如下:
1、代码冗长,开发效率低下;
2、逻辑不直观,容易出错,不好维护;
3、复杂的查询性能不好。比如可能在mongoDB里不能使用索引。这是很多nosql产品本身的特点决定的。
4、复杂的查询很难做cache,不容易优化;
5、复杂的查询不容易复用;
6、复杂的查询很难移植。特别是如果有一天要转向K-V存储的时候。
分享到:
相关推荐
**Spring Data MongoDB 3.2 整合指南** 在当今的软件开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱,而MongoDB作为一款非关系型数据库,因其高性能、高可扩展性和灵活的数据模型,成为了大数据和实时...
spring整合mongodb3.0的jar包,据说已经解决了最新用户验证的问题
在本示例中,我们将深入探讨如何在Spring 3框架中集成Spring Data MongoDB 1.5.6,以便高效地处理MongoDB数据库。...通过学习这些示例,你可以更好地理解和掌握Spring 3与Spring Data MongoDB 1.5.6的整合技巧。
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合
当我们将MongoDB与Spring整合时,可以利用Spring的强大功能来简化MongoDB的使用,提高开发效率。本整合包正是针对这一需求而准备的,它包含了实现MongoDB与Spring集成所需的所有组件。 首先,我们需要了解MongoDB-...
总结,Spring整合MongoDB提供了强大的数据访问支持,通过简单的接口和注解,可以让开发者专注于业务逻辑,而不是底层数据库操作。在实际开发中,了解并熟练运用这些知识点,能显著提升开发效率和代码质量。
总的来说,整合Spring、SpringMVC和MongoDB可以构建出一个高性能、可扩展的Web应用,充分利用MongoDB的灵活性处理非结构化数据,同时利用Spring的优秀特性简化开发流程。这个例子中的"spring-springMVC-mongodb整合...
总结来说,"JAVA操作MongoDB之spring整合"涉及到的主要知识点包括:Spring Boot项目结构,MongoDB的配置和连接,Spring Data MongoDB的MongoRepository接口,以及如何在Controller层处理HTTP请求。通过这样的整合,...
**Spring整合MongoDB基于Maven** 在现代Java开发中,Spring框架与MongoDB数据库的集成是常见的选择,尤其是在处理非关系型数据时。MongoDB是一个高性能、无模式的文档型数据库,而Spring提供了强大的框架支持,使得...
spring-mongodb-example mongodb1.3.5.RELEASE spring 3.1.1整合示例。 修改mongo.properties里面的参数即可进行测试 包括主机地址ip;端口号;数据库 后续会推出其他版本
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redisdubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合#该项目介绍ROOT dubbo管理平台lidong-dubbo-api api模块lidong-dubbo-model model模块lidong-...
在这个项目"springmvc-mongodb-maven结合"中,开发者整合了这三个工具来创建一个运行良好的Java Web应用。以下是关于这些技术及其结合使用的关键知识点: **SpringMVC**: SpringMVC是Spring框架的一个模块,专门...
在项目中,你需要引入`mongodb-driver-sync`或`mongodb-driver-reactivestreams`的依赖,取决于你的应用是否使用了反应式编程。 2. **Spring Data MongoDB**:提供了Spring Bean定义和Repository接口,简化了数据...
SpringBoot 与 MongoDB 的整合主要通过 `spring-boot-starter-data-mongodb` 依赖实现,这使得我们能够轻松地进行 CRUD(创建、读取、更新、删除)操作。 Redis 是一个开源的、高性能的键值对数据存储系统,通常...
3. **Repository接口**:Spring Data MongoDB的Repository接口允许我们定义操作MongoDB的定制方法,无需编写任何DAO层代码。例如,我们可以创建一个`MongoRepository`的子接口,定义`findAll()`、`findById()`等方法...
当我们谈论“Spring-MongoDB整合”时,这意味着我们要将Spring框架与MongoDB数据库集成,以便在Java应用中充分利用MongoDB的优势。 首先,我们需要理解Spring Data MongoDB项目,它是Spring Data模块的一部分,旨在...
3. **Document和MongoEntity**:在Spring MongoDB中,数据模型通常表示为`org.springframework.data.mongodb.core.mapping.Document`注解的类。这个注解告诉Spring如何将类映射到MongoDB的集合中。`@Id`注解用于指定...
本项目"springboot-mongodb-mybatis-demo"将这三个组件整合在一起,提供了一个完整的实例,旨在帮助开发者理解并掌握这三者之间的协同工作。 1. Springboot介绍: Springboot旨在简化Spring应用程序的初始搭建以及...