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);
    }
相关推荐
程序媛小果5 分钟前
基于java+SpringBoot+Vue的桂林旅游景点导游平台设计与实现
java·vue.js·spring boot
2401_857636391 小时前
共享汽车管理新纪元:SpringBoot框架应用
数据库·spring boot·汽车
man20171 小时前
【2024最新】基于springboot+vue的闲一品交易平台lw+ppt
vue.js·spring boot·后端
hlsd#1 小时前
关于 SpringBoot 时间处理的总结
java·spring boot·后端
路在脚下@2 小时前
Spring Boot 的核心原理和工作机制
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的农场管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
好奇的菜鸟2 小时前
Spring Boot 启动时自动配置 RabbitMQ 交换机、队列和绑定关系
spring boot·rabbitmq
小桥流水人家jjh3 小时前
Mybatis执行自定义SQL并使用PageHelper进行分页
java·数据库·spring boot·sql·mybatis
ClareXi3 小时前
react项目通过http调用后端springboot服务最简单示例
spring boot·react.js·http
苹果醋33 小时前
C语言 strlen 函数 - C语言零基础入门教程
java·运维·spring boot·mysql·nginx