最新项目我使用了Spring boot和Spring Data Jpa,在某些web界面中,用户可以动态搜索某些记录,例如。按创建日期搜索订单,按名称搜索商品等。因为存在许多搜索条件,例如名称,品牌,状态等。所以我使用Jpa Specification来实现动态搜索。因此,页面可以在查询参数下面传递给搜索记录,例如
GET /goods?search_LIKE_name=foo #fuzzy search goods by name
GET /goods?search_LIKE_name=foo&search_EQ_status=1 #fuzzy search goods by name and status
等等。
但如果页面没有任何传递,那么它将选择全部。我不希望这种情况发生。我知道mysql命令行有一个名为--select_limit的选项,那么如何全局配置它以限制选择计数呢?例如在application.properties
中spring.sql_select_limit=1000
答案 0 :(得分:1)
我不知道是否有全局配置,但我有一个相对简洁的本地解决方案。在控制器方法上,只需在分页之前使用注释@PageableDefaults(pageNumber = 0, value = x)
。
控制器方法:
public List<Item> fuzzySearch(Object filter, @PageableDefaults(pageNumber = 0, value = x) Pageable pageable) {}
如果缺少页面参数,将使用注释中指定的默认值。
编辑:
如果您设法将分页参数从请求重命名为 size 和 page 并使用方法签名Pageable
作为参数,则可以全局设置页面默认值而不是在需要的地方放置PageableDefaults
注释。
只需覆盖扩展@Configuration
的{{1}}类中的方法。
WebMvcConfigurerAdapter