2017-09-22 76 views
1

具有彈簧引導博客項目,並且需要顯示最新的收藏張貼在主要頁面,在數據庫中有與職位表並用布爾值(TINYINT)show_in_main_page列,它定義是否展後在主頁面或不。如何在jpa和PagingAndSortingRepository中設置每頁限制結果?

在java控制器中獲得dinamicaly小部件並獲得每個小部件發佈的最新最愛,每個小部件都有一個foreach,但每個小部件需要獲得1個或更多的帖子,我使用PagingAndSortingRepository和Results,而控制器調用nextPageable()和下一個最後最喜歡的帖子。

HOWTO設置1周的結果在庫中的每個頁面?如何用每頁結果的數量來製作一個dinamicaly函數?例如:當3是一個dinamicaly值時,通過調用存儲庫獲得3個由控制器調用的頁面結果。

我的界面:

public interface PostRepository extends PagingAndSortingRepository<PostEntity, Long>{ 
    Page<PostEntity> findAll(Pageable pageable); 
    Page<PostEntity> findByShowInMainPage(Boolean showInMainPage); // <-- 
} 
+0

當你說你正試圖從控制器做到這一點,您使用的是內置的彈簧功能來傳遞查詢參數?/mypage?page = 1&size = 3 –

+0

需要內部使用,不可操作使用。 –

回答

2

如果我理解你正確地需要PageRequest

Page<PostEntity> postEntityPage = findAll(new PageRequest(0, 3)); 

它首先(0)頁面獲取三個PostEntity在頁面中。

+0

模擬'LIMIT 0,3',但如果調用下一頁返回下3個結果?需要無限的結果,但每個分頁只能得到x個結果,例如結果中每個頁面有3個結果。 –

+0

@ E-info128的'PageRequest'是頁面的數量第一個參數 - 2 0,1,... – Cepr0

+0

感謝對我的作品,我使用'新PageRequest(0,items_per_page的,Sort.Direction.DESC「 created_at「)'當items_per_page爲1並且每個帖子的部件調用'postEntity = posts.getContent()。get(item_id); posts.nextPageable(); ITEM_ID ++;'。現在,每個窗口小部件dinamicaly都有最後一個最喜歡的貼子,無需獲取所有帖子。謝謝。 –

0

如果你想從控制器獲得呼叫,只對可分頁控件添加的參數。例如,

@RequestMapping(value = "{username}", method = RequestMethod.GET, produces = MediaType.TEXT_HTML_VALUE) 
    public String entries(@PathVariable(PATH_USERNAME) final String username, 
          final Pageable pageable, 
          final Model model) { 
... 

這會給你的控制器頁面和大小的自動參數。所以URL看起來像/ users/myusername?page = 1 & size = 3,並且會返回前3個結果。設置頁面= 2會爲您帶來接下來的3個結果,依此類推。

您可以將分頁變量,然後傳遞給你的資料庫的方法的findAll獲取數據。

+0

感謝但不需要通過請求參數傳遞值的控制,需要dinamicaly顯示由管理員確定的或僅開發的特定數量的值。 –