0
点赞
收藏
分享

微信扫一扫

MyBatis MySQL limit分页含运算动态语句

janedaring 2023-09-23 阅读 41

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 />标签


select * from table limit #{key_offset},#{pageSize}

项目中我的SQL稍微复杂点儿,用的第二种方式,建议大家也用第二种。

实际上如果不想这样做还是将offset的值计算好之后再传入比较好(因为我要兼容Oracle的接口,所以这样搞了)。


举报

相关推荐

0 条评论