SpringBoot+MongoDB實現分頁查詢(倒序)


后端

 @Override
    public Page<StrategyComment> queryPage(StrategyCommentQuery qo) {
        // totalPage  prePage nextPage
        Query query = new Query();
        Criteria criteria = new Criteria();
        if (qo.getStrategyId() != null) {
            criteria = Criteria.where("strategyId").in(qo.getStrategyId());
            query.addCriteria(criteria);
        }
        // 模糊匹配
        if (qo.getKeyword() != null) {
            String keyword = qo.getKeyword();
            String pattern = ".*" + keyword + ".*"; // 正則表達式
            criteria.orOperator(Criteria.where("strategyTitle").regex(pattern),Criteria.where("content").regex(pattern));// 多條件模糊查詢
            query.addCriteria(criteria);
        }
        // totalCount
        long totalCount = mongoTemplate.count(query, StrategyComment.class);
        // 如果沒數據,可以優化性能不用繼續執行了
        if (totalCount == 0) {
            return Page.empty();
        }
        // data
        // 第一個參數 從 0 開始
        Sort orderBy = Sort.by(Sort.Direction.DESC, "createTime"); //倒序
        Pageable pageable = PageRequest.of(qo.getCurrentPage() - 1, qo.getPageSize(),orderBy);
        query.with(pageable);
        List<StrategyComment> data = mongoTemplate.find(query, StrategyComment.class);
        // 三個參數 List<T> content, Pageable pageable, long total
        return new PageImpl<StrategyComment>(data, pageable, totalCount);
    }

前端

<div th:fragment="mongoPage" style="text-align: center;">
    <ul id="pagination" class="pagination"></ul>
    <script>
        //分頁
        $(function () {
            var totalPages = [[${page.totalPages}]]
            var startPage = [[${page.pageable.pageNumber}+1]]

            $("#pagination").twbsPagination({
                totalPages: totalPages || 1,
                startPage: startPage || 1,
                visiblePages: 5,
                first: "首頁",
                prev: "上頁",
                next: "下頁",
                last: "尾頁",
                initiateStartPageClick: false,
                onPageClick: function (event, page) {
                    $("#currentPage").val(page);
                    $("#searchForm").submit();
                }
            });
        })
    </script>
</div>

如果不想分頁,想實現倒序,可以參考下面代碼

 @GetMapping("/comments")
    public Object comments(Long travelId){
        List<TravelComment> commentList = travelCommentRepository.findByTravelId(travelId,Sort.by(Sort.Direction.DESC, "createTime"));
       return JsonResult.success(commentList);
    }
@Repository
public interface TravelCommentRepository extends MongoRepository<TravelComment,String> {
    /**
     * 按時間倒序查詢出所有評論
     */
    List<TravelComment> findByTravelId(Long travelId, Sort createTime);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM