使用起来就简单了。
还有像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整合mongodb3.0的jar包,据说已经解决了最新用户验证的问题
Spring3+Spring-data-mongodb1.5.6示例
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合
Spring-Data-MongoDB 1.9.3、MongoDB3.2整合
spring,SpringMVC,整合MongoDB的例子,基于spring-data-mongo1.X,spring4.X
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-...
这里整理了mongodb-spring的整合包,希望可以帮助刚接触的小伙伴。有什么不足的地方,希望可以多多指教。本人也在学习中。
自己开发能跑的项目 spring-data-mongodb整合spring-boot
spring-mongodb整合
源码-spring+MongoDB的整合Dome
spring-data-commons.jar spring-data-commons-core jar包下载 从 maven仓库中下载的官方jar包,放心使用
NULL 博文链接:https://mukeliang.iteye.com/blog/2228281
spring-mongodb整合源码 注释,包含用到的jar.
Spring-Mongodb开发例子,对于初学者有一定的参考意义。
Spring整合MongoDB基于Maven,简单的模版编写JUnit测试。有写得不对的地方希望大家多多批评。
Spring3.1 MongoDB整合实例(含jar包)已测
使用spring mvc + spring data mongodb + mongodb +spring 整合,支持html压缩,支持mongodb用户登录,重写了spring的MongoTemplate支持更多方式,重写MongoTemplate支持切换数据库,支持mongodb集群。spring版本为...
1、java客户端使用mongodb changestream代码 2、springboot整合mongodb changestream代码
使用JAVA操作MongoDB进行简单测试,构建项目工具为Maven,使用的简单案例进行测试,包含增删改查的具体方式以及实现,pom.xml中集成了Spring所需jar包。欢迎下载。