问题现象
带有Limit 的 SQL都默认在后边继续拼接了 limit ?,? 导致SQL语法报错 ;
pageHelper 难道不是必须开启才能使用吗 ?自动拼接什么鬼??
PageHelper.startPage(1,10);
问题分析
经过一番分析,发现是由于加入了配置
supportMethodsArguments 参数,默认是false,
官方介绍
注意: 官方介绍的不是特别清楚,其实这是个自动分页的配置,依据的是入参,如果参数中有pageNum,pageSize分页参数,则会自动分页
参数名称默认取:pageNum,pageSize
参数名称也可以自定义但是需要加配置
以下是测试的结果
使用PageHelper版本 5.1.6
测试时使用的配置(大多项目)
自己写了一个SQL,参数类中有 pageNum,pageSize 参数
当supportMethodsArguments设置为 true 时候默认 启用了分页,并且先执行了count后面的查询也拼接了limit
如果原先SQL中有 limit,并且入参中带有分页参数,则pageHelper会自动执行分页,所以就出现了SQL最后拼接了两个limit导致SQL报错了。
问题解决
supportMethodsArguments参数 默认false ;
解决方案可以将这个配置去掉,或者改为false。将自动根据参数分页配置关闭,在使用的地方手动开启;