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);
    }
相关推荐
雾林小妖18 分钟前
springboot集成deepseek
java·spring boot·后端
苦学编程的谢3 小时前
Mybatis_4
java·spring boot·tomcat·mybatis·mybatis_plus
她说..3 小时前
MybatisPlus-快速入门
java·spring boot·spring cloud·微服务·mybatis·mybatisplus
tuokuac4 小时前
创建的springboot工程java文件夹下还是文件夹而不是包
java·spring boot·后端
Hejjon5 小时前
携带参数的表单文件上传 axios, SpringBoot
java·spring boot·后端
荔枝爱编程6 小时前
高性能企业级消息中心架构实现与分享(三):数据存储设计与高可用保障
spring boot·后端·消息队列
武昌库里写JAVA6 小时前
【MySQL】MySQL数据库如何改名
java·vue.js·spring boot·sql·学习
neoooo9 小时前
《锁得住,才能活得久》——一篇讲透 Redisson 分布式锁的技术实录
java·spring boot·redis
用户60830892904711 小时前
Spring Boot自定义注解
spring boot
hrrrrb13 小时前
【Spring Boot 快速入门】二、请求与响应
spring boot·后端