PageHelper参数配置supportMethodsArguments踩过的坑

问题现象

带有Limit 的 SQL都默认在后边继续拼接了 limit ?,? 导致SQL语法报错 ;
image.png

pageHelper 难道不是必须开启才能使用吗 ?自动拼接什么鬼??
PageHelper.startPage(1,10);

问题分析

经过一番分析,发现是由于加入了配置
image.png

supportMethodsArguments 参数,默认是false,

官方介绍
image.png

注意: 官方介绍的不是特别清楚,其实这是个自动分页的配置,依据的是入参,如果参数中有pageNum,pageSize分页参数,则会自动分页

参数名称默认取:pageNum,pageSize
参数名称也可以自定义但是需要加配置
image.png

以下是测试的结果
使用PageHelper版本 5.1.6
测试时使用的配置(大多项目)
image.png

自己写了一个SQL,参数类中有 pageNum,pageSize 参数
image.png

当supportMethodsArguments设置为 true 时候默认 启用了分页,并且先执行了count后面的查询也拼接了limit在这里插入图片描述

如果原先SQL中有 limit,并且入参中带有分页参数,则pageHelper会自动执行分页,所以就出现了SQL最后拼接了两个limit导致SQL报错了。

问题解决

supportMethodsArguments参数 默认false ;
解决方案可以将这个配置去掉,或者改为false。将自动根据参数分页配置关闭,在使用的地方手动开启;
image.png

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
pagehelper.supportMethodsArgumentsPageHelper 插件的一个配置项,用于指定插件支持的方法参数类型。通常情况下,PageHelper 可以自动识别出方法的参数类型,但是在某些特殊情况下,可能需要手动指定插件支持的方法参数类型,才能正常使用插件功能。 该配置项可以设置为一个字符串数组,每个元素表示一个支持的方法参数类型。常见的方法参数类型包括: - "int":表示方法参数为 int 类型; - "java.lang.Integer":表示方法参数为 Integer 类型; - "com.github.pagehelper.Page":表示方法参数Page 对象类型; - "com.github.pagehelper.PageRowBounds":表示方法参数PageRowBounds 对象类型。 使用示例: ```java @Configuration public class PageHelperConfig { @Bean public PageInterceptor pageInterceptor() { PageInterceptor pageInterceptor = new PageInterceptor(); Properties properties = new Properties(); properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("params", "count=countSql"); properties.setProperty("reasonable", "true"); pageInterceptor.setProperties(properties); return pageInterceptor; } } ``` 在上面的示例中,通过设置 supportMethodsArguments 为 true,来启用插件对方法参数类型的自动识别。如果需要手动指定支持的方法参数类型,可以将该属性设置为一个字符串数组,例如: ```java properties.setProperty("supportMethodsArguments", "int,java.lang.Integer,com.github.pagehelper.Page,com.github.pagehelper.PageRowBounds"); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值