2017-09-22 73 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显示由管理员确定的或仅开发的特定数量的值。 –