一、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");
分页查询:
public Page<AssetIdentifier> findAllAssetIdentifier(HttpServletRequest request){
//当前页码 默认给了0
int page = Integer.parseInt(request.getParameter("page"));
//页面展示数据条数 默认给了 10
int count = Integer.parseInt(request.getParameter("count"));
//筛选条件
String typeCtg = request.getParameter("type_ctg");
String type = request.getParameter("type");
String company = request.getParameter("company");
//排序
//Sort sort = Sort.by(Sort.Direction.DESC, "_id");
//Pageable pageable = PageRequest.of(page, count, sort);
Pageable pageable = PageRequest.of(page, count);
Query query = new Query();
//动态拼接查询条件
if(StringUtils.isNotBlank(typeCtg)){
query.addCriteria(Criteria.where("type_ctg").is(typeCtg));
}
if(StringUtils.isNotBlank(type)){
query.addCriteria(Criteria.where("type").is(type));
}
if(StringUtils.isNotBlank(company)){
query.addCriteria(Criteria.where("company").is(company));
}
//获取总条数
long count1 = mongoTemplate.count(query,AssetIdentifier.class);
LOGGER.debug("asset identifier count:"+count1);
List<AssetIdentifier> identifierList = mongoTemplate.find(query.with(pageable), AssetIdentifier.class);
return new PageImpl<AssetIdentifier>(identifierList,pageable,count1);
}
/**
*条件查询
*/
public List<User> findUserAll(Principal principal)
throws ValueInvalidException, SystemErrorException {
ObjectId tenancyId = getNowUserTenancyID(principal);
Query query = new Query();
query.addCriteria(Criteria.where("tenancy_id").is(tenancyId));
return mongoTemplate.find(query,User.class);
}