问题比较简单,解决方法也比较简单,这里简单描述一下。
具体描述请看这里:问题详细描述
- 产生原因
Mybatis+Pagehelper在执行分页逻辑时时,会默认在你的写的SQL语句后面添加limit,这时会导致出现SQL语法错误。 - 解决办法
大多数是让安全使用PageHelper,或是去掉SQL末尾的分号,但是无法解决一种场景下的问题,如全年级数学成绩前100名做分页,此时若使用数据库排序,则你的SQL末尾就有limit,再整合PageHelper会出现两个limit连在一起,即代码中写的SQL可能为:
select score from xxx order by score desc limit 100
而最终在数据库中执行的SQL语句为:
select score from tbl_score order by score desc limit 100 limit 10
我想到的解决办法则是对自己的结果包装一次作为子表,这样就“完美”避开整合PageHelper默认在SQL后面加limit出错,即代码中可以改成
select t.score from (select score from tbl_score order by score desc limit 100) AS t
这样则可避免产生SQL语法问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)