前言
从今天往前数三天,我们小团队参加了一个比赛,开发一个项目,前端是Android和微信小程序,后台数据库用的MongoDB。以前没用过,所以我也是用了一天的时间来学习MongoDB数据库,还好,挺简单的。但时做项目时,不能用原生的MongoDB方法呀,所以一边开发一边学习spring整合的MongodbTemplate。在此也是整理下方法,有不足之处,还望大家指正。
spring data MongoDB的开发文档
https://docs.spring.io/spring-data/mongodb/docs/2.1.5.RELEASE/api/
一、CRUD之添加
在项目中实现添加时比较简单的:
save()与insert是等价的。
Stud stud = new Stud(1,"fenganchen",18) //实例化一个实体类
MongodbTemplage.save(stud );
或者
MongodbTemplage.insert(stud);
二、CRUD之删除
删除也是比较简单的,看代码
MongodbTemplage.remove(Query query, Class<?> entityClass)
参数解释:
Query query:传入的查询条件,按此条件进行删除
Class<?> entityClass:所删除的数据的实体类
还可以带上参数
String collectionName : 这是集合的名称
Query的实现:
Query query = new Query(Criteria.where("要查询的属性").is("属性值"));
如果条件多,可这样 and) 和 andOperator()
new Query(Criteria.where(“要查询的属性”).is(“属性值”).and(“要查询的属性”).is(“属性值”))
或者
new Query(Criteria.where(“要查询的属性”).is(“属性值”).andOperator(Criteria.where(“要查询的属性”).is(“属性值”)));
==一个Criteria中只能有一个andOperator,and可以多个,我们查询并列条件时,比较建议使用and方法。 ==
三、CRUD之更改
MongodbTemplage.update(Query var1, Update var2, Class<?> var3)
MongodbTemplage.updateFirst(Query var1, Update var2, Class<?> var3)
zhe两个不同点之处,是updateFirst只修改查到的第一个。
参数解释:
Query var1 :同上
Update var2 : 修改数据,或者说修改属性值
使用方法:
-
Update update = new Update(); update.set("属性","属性值");
Class<?> var3 : 所对应的实体类。
四、CRUD之查询
1.查询所有,无参数
MongodbTemplage.find(Query var1, Class<T> var2, String var3)
Query var1 : 写 new Query();
Class var2 :实体类
String var3 : 集合名称
2.根据字段查询数据
MongodbTemplage.find(Query var1, Class<T> var2, String var3)
Query var1 :
Query query = new Query(Criteria.where("要查询的属性").is("属性值"));
Class var2 :实体类
String var3 : 集合名称
2.根据字段查询 指定的字段
MongodbTemplage.find(Query var1, Class<T> var2, String var3)
参数解释:
- Query var1 :把条件写进去,把指定字段写进去
使用 BasicDBObject 类
BasicDBObject fieldsObject = new BasicDBObject();
fieldsObject.put(“指定返回的字段”, 值);
这里的值 可为true,1(显示返回)和false,0(不显示不返回)。
测试代码
//指定返回的字段
BasicDBObject fieldsObject = new BasicDBObject();
fieldsObject.put("answerContent", true);
//查询条件
BasicDBObject dbObject = new BasicDBObject();
dbObject.put("topic_id", topic_id);
Query query = new BasicQuery(dbObject.toJson(), fieldsObject.toJson());
List<Answer> answer = mongoTemplate.find(query, Answer.class, "answer");