概述
MySQL基本的分页语句
select * from table limit offset,pageSize
正常情况下是没问题的,如果offset是动态的
select * from table limit (pageNum-1)*pageSize,pageSize
这样就无法执行了。
具体原因可以在MySQL中直接执行这种含运算符的语句试下就知道了。
现在给出两种解决方案
- 使用MySQL提供的方案(感觉上好像也不是MySQL给的,大家自己看吧)
原始SQL
select * from mysql01 limit (1-1)*5,5
方案:
SET @a=CONCAT('select * from mysql01 limit ',(1-1)*5,',',5,'');
PREPARE texts FROM @a;
EXECUTE texts;
简单的SQL在mybatis中直接按照上边替换就好。这里参考的解决在MYSQL中 limit语句无法识别运算的问题。
- 使用< bind />标签
<bind name="key_offset" value="(pageNum-1)*pageSize"></bind>
select * from table limit #{key_offset},#{pageSize}
项目中我的SQL稍微复杂点儿,用的第二种方式,建议大家也用第二种。
实际上如果不想这样做还是将offset的值计算好之后再传入比较好(因为我要兼容Oracle的接口,所以这样搞了)。
最后
以上就是忧心大神为你收集整理的MyBatis MySQL limit分页含运算动态语句的全部内容,希望文章能够帮你解决MyBatis MySQL limit分页含运算动态语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复