一、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){//当前页码 默认给了0int page = Integer.parseInt(request.getParameter("page"));//页面展示数据条数 默认给了 10int 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);
}