MongoDB:CRUD
只展示实现类代码
添加
java
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private MongoFactory mongoFactory;
@Override
public boolean saveEntity(entityForm form) {
try {
实体类 en = new 实体类();
en.setName(form.getName);
// ...
实体类 save = mongoTemplate.save(en);
return Objects.nonNull(save.get_id());
} catch (Exception e) {
log.error(e.getMessage());
}
}
底下的就给关键代码了,w太懒了。。。
删除
java
Query query = new Query(Criteria.where("条件字段名称例如_id").is(id));//id是传进来的条件
DeleteResult remove = mongoTemplate.remove(query, 实体类.class);
return remove.getDeletedCount() > 0; //返回删除条数
修改
java
Query query = new Query();// 添加修改表条件为id=id
query.addCriteria(Criteria.where("主键id字段名").is(id));
Update update = new Update(); // 设置需要修改的字段
update.set("字段名",新值);
// 等等...
//返回修改结果
UpdateResult updateResult = mongoTemplate.updateFirst(query, update, 实体类.class);
//updateResult.getModifiedCount()可以获得成功修改条数
条件查询
java
@Override
public List<实体类> getHbzbGudongList(条件实体类 search) {// 目前只有一个关键字字段(keywords) 可以添加多个
Query query = new Query();
if (Objects.nonNull(search.getKeywords())) {
Pattern pattern = Pattern.compile("^.*" + search.getKeywords() + ".*$");
query.addCriteria( // orOperator == 或者。里面俩条件关系是or,还有andOperator顾名思义等于数据库中的and
new Criteria().orOperator(
Criteria.where(条件字段名1).is(pattern),
Criteria.where(条件字段名2).is(pattern)
)
);
}
List<实体类> ls= mongoTemplate.find(query, 实体类.class);
return ls;
}
这玩意百度了好久用什么聚合查询 老是会报错什么的,导包也导不进,只能用底下发方法实现了
分页条件查询
java
private Integer type;
private String keywords;
-----------------上面是orderQuery 类的内容,可以自定义
import org.springframework.*; //几乎包都在这下面,我懒得一个个复制出来了,别用*
/**
* 分页条件查询 //页码也可以不传,只要让orderQuery类继承一个基础分页对象就行
* @param pageNum 页码
* @param pageSize 条数
* @param order 查询条件
* @return 返回分页列表
*/
@Override
public Page<实体类> getOrderPage(Integer pageNum, Integer pageSize, orderQuery order) {
Pageable pageable = PageRequest.of(pageNum - 1, pageSize);
MongoTemplate mongoTemplate = mongoFactory.mongoTemplate("数据库名");
Query query = new Query();
// 判断条件类型
if (Objects.nonNull(order.getType()) && Objects.nonNull(order.getKeywords())) {
Integer type = order.getType();
switch (type) { // 查询类型:{0:订单号,1:商家名称,2:商品名称}
case 0 ->
query.addCriteria("字段名1").is(order.getKeywords()));
case 1 ->
query.addCriteria("字段名2").is(order.getKeywords()));
case 2 ->
query.addCriteria("字段名3").is(order.getKeywords()));
}
}
long total = mongoTemplate.count(query, 实体类.class);
List<实体类> orderPageVOS = mongoTemplate.find(query.with(pageable), 实体类.class);
return new PageImpl<>(orderPageVOS, pageable, total);
}