gpt4 book ai didi

mysql - 如何在 spring data jpa 中全局限制选择计数?

转载 作者:行者123 更新时间:2023-11-29 02:53:03 24 4
gpt4 key购买 nike

最近的项目我使用了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

最佳答案

我不知道是否有全局配置,但我有一个相对简洁的本地解决方案。在 Controller 方法上,只需在可分页之前使用注释 @PageableDefaults(pageNumber = 0, value = x)

Controller 方法:

public List<Item> fuzzySearch(Object filter, @PageableDefaults(pageNumber = 0, value = x) Pageable pageable) {}

如果页面参数缺失,将使用注释中指定的默认值。

编辑:

如果您设法将分页参数从请求重命名为 sizepage 并使用带有 Pageable 的方法签名作为参数,您可以设置页面默认值全局而不是在需要的地方放置 PageableDefaults 注释。只需覆盖扩展 WebMvcConfigurerAdapter@Configuration 类中的方法即可。

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setFallbackPageable(new PageRequest(0, 1000));
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}

关于mysql - 如何在 spring data jpa 中全局限制选择计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33650460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com