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

只展示实现类代码

添加


    @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太懒了。。。

删除

            Query query = new Query(Criteria.where("条件字段名称例如_id").is(id));//id是传进来的条件

            DeleteResult remove = mongoTemplate.remove(query, 实体类.class);

            return remove.getDeletedCount() > 0; //返回删除条数

修改


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()可以获得成功修改条数

条件查询

@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;
    }

这玩意百度了好久用什么聚合查询 老是会报错什么的,导包也导不进,只能用底下发方法实现了

分页条件查询


    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);
    }


  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哒不溜-w

别给我打手续费太贵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值