zoukankan      html  css  js  c++  java
  • java使用mongodb分页查询案例

    
    
    @Override
    public Response chipListByPage(ChipPageListParam request) {
    //查询条件
    Query query = new Query();
    Criteria criteria = new Criteria();
    if (StringUtils.isNotBlank(request.getTitleLike())) {
    Pattern pattern = Pattern.compile("^.*" + request.getTitleLike() + ".*$", Pattern.CASE_INSENSITIVE);
    criteria = criteria.and("chipName").regex(pattern);
    }
    if (StringUtils.isNotBlank(request.getPartnersId())) {
    criteria = criteria.and("partnersId").is(request.getPartnersId());
    }
    Integer pageNum = request.getPageNum();
    if (pageNum == null || pageNum <= 0) {
    pageNum = 1;
    }
    Integer pageSize = request.getPageSize();
    if (pageSize == null || pageSize <= 0) {
    pageSize = 10;
    }

    //mongodb分页查询核心代码
    Query countQuery = new Query(criteria);
    long totalCount = mongoTemplate.count(countQuery, RedChip.class);
    query = query.limit(pageSize).skip((pageNum - 1) * pageSize);
    query = query.addCriteria(criteria);
    query = query.with(Sort.by(Sort.Order.desc("createTime")));
    List<RedChip> redChips = mongoTemplate.find(query, RedChip.class);
    // 转换vo
    List<ChipListVO> chipListVOS = JSON.parseArray(JSON.toJSONString(redChips), ChipListVO.class);
    for (ChipListVO item: chipListVOS
    ) {
    if(StringUtils.isBlank(item.getBatchCode())|| Objects.isNull(item.getSuitPlatformId())|| Objects.isNull(item.getActiveRelatedStatus()))
    continue;
    if(item.getSuitPlatformId().equals(RedChipDetailSuitEnum.LiZan.getValue()) && 1 == item.getActiveRelatedStatus()){
    item.setPacketTitle("("+item.getBatchCode()+")");
    }
    }
    Page<ChipListVO> page = new Page<>();
    page.setRows(chipListVOS);
    page.setTotalCount(totalCount);
    BigDecimal totalPage = new BigDecimal(totalCount);
    totalPage = totalPage.divide(new BigDecimal(request.getPageSize()), RoundingMode.CEILING);
    page.setTotalPage(totalPage.longValue());
    page.setPageNum(pageNum);
    page.setPageSize(pageSize);
    return Response.success(page);
    }


    //分页类
    @ApiModel(value = "分页参数")
    @Data
    public class BasePageParam implements Serializable {
    /**
    * 当前页页码
    */
    @ApiModelProperty(value = "当前页页码")
    @NotNull(message = "缺少分页参数: pageNum")
    @Min(value = 1)
    private Integer pageNum;
    /**
    * 每页记录数
    */
    @ApiModelProperty(value = "每页记录数")
    @NotNull(message = "缺少分页参数: pageSize")
    @Min(value = 1)
    private Integer pageSize;
    }
    /**
    * 分页类
    */
    @Getter
    @Setter
    public class Page<T> extends BasePageParam {
    //总页数
    private long totalPage;

    //总记录数
    private long totalCount;

    //每页显示集合
    private List<T> rows;
    }




     
  • 相关阅读:
    Spring IOC 和 AOP
    Java 类加载机制
    面向对象程序设计思想简述
    Linux 卸载 MySQL 数据库
    Linux 安装 mysql 数据库
    Linux 配置 JDK
    Linux 指令
    去除字符串里面的某些字符替换成另一个字符
    jsp有哪些内置对象?作用分别是什么? 分别有什么方法?
    jsp有哪些动作?作用分别是什么?
  • 原文地址:https://www.cnblogs.com/guangxiang/p/13092137.html
Copyright © 2011-2022 走看看