MyBatis limit分页设置的实现 程序员文章站 2022-06-27 15:26:03 错误的写法: 错误的写法: <select id="querymyapplicationrecord" parametertype="myapplicationrequest" resultmap="myapplicationmap"> select a.*, from tb_user a where 1=1 <if test="ids != null and ids.size()!=0"> and a.id in <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> </if> <if test="statuslist != null and statuslist.size()!=0"> and a.status in <foreach collection="statuslist" item="status" index="index" open="(" close=")" separator=","> #{status} </foreach> </if> order by a.create_time desc limit (#{pageno}-1)*#{pagesize},#{pagesize}; // 错误 </select> 在mybatis中limit之后的语句不允许的变量不允许进行算数运算,会报错。 正确的写法一: <select id="querymyapplicationrecord" parametertype="myapplicationrequest" resultmap="myapplicationmap"> select a.*, from tb_user a where 1=1 <if test="ids != null and ids.size()!=0"> and a.id in <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> </if> <if test="statuslist != null and statuslist.size()!=0"> and a.status in <foreach collection="statuslist" item="status" index="index" open="(" close=")" separator=","> #{status} </foreach> </if> order by a.create_time desc limit ${(pageno-1)*pagesize},${pagesize}; (正确) </select> 正确的写法二:(推荐) <select id="querymyapplicationrecord" parametertype="myapplicationrequest" resultmap="myapplicationmap"> select a.*, from tb_user a where 1=1 <if test="ids != null and ids.size()!=0"> and a.id in <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> </if> <if test="statuslist != null and statuslist.size()!=0"> and a.status in <foreach collection="statuslist" item="status" index="index" open="(" close=")" separator=","> #{status} </foreach> </if> order by a.create_time desc limit #{offset},#{limit}; (推荐,代码层可控) </select> 分析:方法二的写法,需要再请求参数中额外设置两个get函数,如下: @data public class queryparametervo { private list<string> ids; private list<integer> statuslist; // 前端传入的页码 private int pageno; // 从1开始 // 每页的条数 private int pagesize; // 数据库的偏移 private int offset; // 数据库的大小限制 private int limit; // 这里重写offset和limit的get方法 public int getoffset() { return (pageno-1)*pagesize; } public int getlimit() { return pagesize; } } 到此这篇关于mybatis limit分页设置的实现的文章就介绍到这了,更多相关mybatis limit分页内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! 相关标签: MyBatis limit 分页 上一篇: MacBookair屏幕怎么缩放? MacBook air缩小放大屏幕的教程 下一篇: 联想Think X1发布会发布了哪些新品? ThinkPad X1 6699元起 推荐阅读 TP5框架实现自定义分页样式的方法示例 iOS实现文本分页的方法示例 移动端web滚动分页的实现方法 android 对话框弹出位置和透明度的设置具体实现方法 thinkphp 一个页面使用2次分页的实现方法 Mybatis中设置全局变量的方法示例 三步实现Django Paginator分页的方法 django js实现部分页面刷新的示例代码 php实现的漂亮分页方法 实现SQL分页的存储过程代码