mongoTemplate分页查询例子

262 阅读1分钟

简单的例子

需要注意的是,MongoDB的current 从0开始

public MGPage<ScriptResultMGBO> page(ScriptResultPageQuery query, Integer current, Integer size) {  
    //查询参数配置  
    Criteria criteria = new Criteria();  
    criteria.and("taskRecordId").is(query.getTaskRecordId());  
    if (ObjectUtil.*isNotEmpty*(query.getScriptResultStatus())) {  
        criteria.and("scriptResultStatus").is(query.getScriptResultStatus());  
    }  
    criteria.and("deviceId").is(query.getDeviceId());  
    String like = query.getLike();  
    if (StrUtil.*isNotEmpty*(like)) {  
        Pattern pattern = Pattern.compile("^.*" + like + ".*$",Pattern.CASE_INSENSITIVE);  
        criteria.orOperator(  
            Criteria.*where*("caseName").regex(pattern),  
            Criteria.*where*("scriptName").regex(pattern)  
        );  
    }  
    Query queryBuilder = new Query(criteria);  
    Long totalSize = mongoTemplate.count(queryBuilder, ScriptResultMGBO.class, "scriptResult");  
    if (totalSize.equals(0l)) {  
        return new MGPage<>(page, size);  
    }  
    // 分页参数  
    Pageable pageable = PageRequest.*of*(page - 1, size, Sort.by(Sort.Direction.*ASC*, "scriptStartTime"));  
    queryBuilder.with(pageable);  
    List<ScriptResultMGBO> list = mongoTemplate.find(queryBuilder, ScriptResultMGBO.class, "scriptResult");  
    return new MGPage<>(current, size, totalSize, list);  
}