实体类
public class Student implements Serializable {
private String id;
private String name;
private String createTime;
}
查询、分页、排序实现
import org.springframework.data.domain.*;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
@Component
public class OperationLogServiceImpl implements OperationLogService {
@Autowired
private MongoTemplate mongoTemplate;
private static final String LIKE_PREFIX = "^.*";
private static final String LIKE_SUFFIX = ".*$";
@Override
public PageResult<OperationLogVo> vehicleOperationLogList(int num, int pageSize) {
Query mongoQuery = new Query();
final OperationLogConditionPocondition = po.getCondition();
mongoQuery.addCriteria(Criteria.where("name").is("张三"));
Pattern pattern = Pattern.compile(LIKE_PREFIX + "三" + LIKE_SUFFIX, Pattern.CASE_INSENSITIVE);
mongoQuery.addCriteria(Criteria.where("name").regex(pattern));
mongoQuery.addCriteria(Criteria.where("createTime").gt("2022-01-01 00:00:00"));
mongoQuery.addCriteria(Criteria.where("createTime").lt("2022-12-31 23:59:59"));
Criteria criteria = new Criteria();
criteria.and("date_time").gte("2022-01-01 00:00:00").lte("2022-12-31 23:59:59");
mongoQuery.addCriteria(criteria);
final long count = mongoTemplate.count(mongoQuery, PlotOperationLogEntity.class);
this.setPageableAndSort(mongoQuery, po.getNum(), po.getPageSize());
final List<OperationLogVo> list = mongoTemplate.find(mongoQuery, OperationLogVo.class);
PageResult<VehicleOperationLogVo> pageResult = new PageResult<>();
pageResult.setCount((long) list.size());
pageResult.setTotal(calcTotalPage(count, po.getPageSize()));
pageResult.setList(list);
return pageResult;
}
private static long calcTotalPage(long totalCount, int pageSize) {
return totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
}
private void setPageableAndSort(Query mongoQuery, long num, int pageSize){
Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
Pageable pageable = org.springframework.data.domain.PageRequest.of(Math.toIntExact(num - 1), pageSize);
mongoQuery.with(pageable);
mongoQuery.with(sort);
}
}
End