2017-09-22 8 views
1

Spring Boot Blogプロジェクトがあり、メインページに最新のお気に入りの投稿を表示する必要があります。データベースには、投稿とブール値(tinyint)の列があるshow_in_main_pageの列があります。か否か。jpaとPagingAndSortingRepositoryで1ページあたりの制限結果を設定する方法は?

javaコントローラでdinamicalyウィジェットを取得し、各ウィジェットで最新のお気に入りの投稿を取得するには、各ウィジェットでforeachを使用しますが、各ウィジェットで1つ以上の投稿を取得する必要があります。コントローラのnextPageable()と次の最後の好きなポストを呼び出します。

リポジトリのページごとに1つの結果を設定するにはどうすればよいですか? howtoはページごとの結果の数でディナミカル関数を作成します:例:リポジトリを呼び出して、3がdinamicaly値のときにコントローラから呼び出されたページで3つの結果を取得します。

私のインターフェイスは、次のとおりです。

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

コントローラからこれを実行しようとしているときは、組み込みのSpring機能を使用してクエリパラメータを渡していますか?/mypage?page = 1&size = 3 –

+0

は内部使用が必要であり、操作はできません。 –

答えて

2

私が正しくあなたを理解していれば、あなたがPageRequestを必要とする:

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

これは、ページ内の3 PostEntityで最初に(0)ページの取得します。

+0

は 'LIMIT 0、3'をシミュレートしますが、次のページを呼び出すと次の3つの結果を返しますか?無制限の結果が必要ですが、結果のページごとに3つずつ、ページごとにx個の結果しか表示されません。 –

+0

@ e-info128 PageRequestの最初のパラメータはページの番号です - 0、1、2 ... – Cepr0

+0

私のために働いてくれてありがとう、私は '新しいPageRequest(0、items_per_page、Sort.Direction.DESC、 items_per_pageが1で、投稿の各ウィジェットが 'postEntity = posts.getContent()。get(item_id);を呼び出すと、' created_at ")' 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 &サイズ= 3のようになり、最初の3つの結果が返されます。ページを2に設定すると次の3つの結果が得られます。

次に、ページ可能な変数をリポジトリのfindAllメソッドに渡して、データを取得できます。

+0

ありがとうございますが、要求パラメータで制御値を渡す必要はありません。管理者が決定した特定の数の値を表示するか、または開発のみを行う必要があります。 –

関連する問題