我是靠谱客的博主 忧心大神,最近开发中收集的这篇文章主要介绍MyBatis MySQL limit分页含运算动态语句,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MySQL基本的分页语句

select * from table limit offset,pageSize

正常情况下是没问题的,如果offset是动态的

select * from table limit (pageNum-1)*pageSize,pageSize

这样就无法执行了。
具体原因可以在MySQL中直接执行这种含运算符的语句试下就知道了。

现在给出两种解决方案

  1. 使用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语句无法识别运算的问题。

  1. 使用< 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分页含运算动态语句所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部