SpringBoot集成Mongntemplate 模糊查询、日期比较和分页

pom.xml

        <!-- mongodb -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

配置文件:

spring: 
    data: 
        mongodb: 
            host: localhost
            port: 27017
            database: test-logs

model:



import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;


@Data
@Document(collection = "test_info")
public class LogsInfo implements Serializable {

    private String id;

    private String projectName;

   
}

controller:

    @GetMapping("/getUserLog")
    public List<LogsInfo>  getUserLog( Integer page,
                                 Integer size,
                                 String sortRow,
                                 Integer sortDire,
                                 String status,
                                String startTime,
                                 String endTime) {
        Sort sort;
        if (sortDire == 1) {
            sort = new Sort(Sort.Direction.ASC, sortRow);
        } else {
            sort = new Sort(Sort.Direction.DESC, sortRow);
        }
        Pageable pageable = PageRequest.of(page - 1, size, sort);
        Page<LogsInfo> logsInfoList = logsInfoService.getUserLogs(pageable, status, startTime, endTime);
        return logsInfoList;
    }

service:


import com.micro.model.LogsInfo;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Page;


import java.util.List;

public interface LogsInfoService {

    Page<LogsInfo> getUserLogs(Pageable pageable, String status, String startTime, String endTime);

}

Impl:


import cn.com.sinosoft.model.LogsInfo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.regex.Pattern;

import java.util.List;

@Component
public class LogsInfoServiceImpl implements LogsInfoService {
      @Autowired
    MongoTemplate mongoTemplate;

 public Page<LogsInfo> getUserLogs(Pageable pageable, String status, String startTime, String endTime) {
        //模糊查询
        Pattern statusPattern = Pattern.compile("^" + status + ".*", Pattern.CASE_INSENSITIVE);
        Query query = new Query(
                Criteria.where("status").regex(statusPattern)
                        .andOperator(
                                //小于
                                Criteria.where("endTime").lt(endTime),
                                //大于
                                Criteria.where("startTime").gte(startTime)
                        )
        );
        //分页
        query.with(pageable);
        System.out.println(query.toString());

        List<LogsInfo> lists = mongoTemplate.find(query, LogsInfo.class);
        long total = mongoTemplate.count(query, LogsInfo.class);
        return new PageImpl(lists, pageable, total);
    }


}

MongoDB可视化工具:robo3t

注意点:

1、授权失败,添加用户

命令行连接mongoDB执行一下命令

use admin

 db.createUser(
   {
     user: "admin",
     pwd: "admin123",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   } )
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rorschach01

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值