springBoot+mongoDB项目中,使用MongoFactory、MongoTemplate分页条件查询,增删查改

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);
    }
相关推荐
enjoy嚣士8 小时前
springboot 之 HTML与图片生成 (2)
spring boot·html转图片
白初&9 小时前
SpringBoot后端基础案例
java·spring boot·后端
再睡亿分钟!10 小时前
Spring MVC 的常用注解
java·开发语言·spring boot·spring
码界奇点10 小时前
MongoDB vs MySQLNoSQL与SQL数据库的架构差异与选型指南
数据库·sql·mongodb·系统架构
Sam-August11 小时前
【分布式架构实战】Spring Cloud 与 Dubbo 深度对比:从架构到实战,谁才是微服务的王者?
java·spring cloud·dubbo
麦兜*11 小时前
MongoDB 常见错误解决方案:从连接失败到主从同步问题
java·数据库·spring boot·redis·mongodb·容器
清风66666612 小时前
基于51单片机手机无线蓝牙APP控制风扇调速设计
单片机·mongodb·智能手机·毕业设计·51单片机·课程设计
爱吃烤鸡翅的酸菜鱼15 小时前
【Spring】原理解析:Spring Boot 自动配置
java·spring boot
十八旬15 小时前
苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码
java·数据库·spring boot·redis·缓存·spring cache
syty202016 小时前
K8s是什么
容器·kubernetes·dubbo