MyBatis limit分页设置的实现
<select 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 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 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函数,如下:
@Datapublic 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分页内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. MySQL基本调度策略浅析2. MySQL Community Server 5.1.493. MySQL中 concat函数的使用4. Windows下在DOS用mysql命令行导入.sql文件5. 单机创建物理Oracle9istandby数据库6. Mybatis 实现一个搜索框对多个字段进行模糊查询7. MySQL存储引擎选择InnoDB还是MyISAM8. Mysql故障排除:Starting MySQL. ERROR! Manager of pid-file quit without updating file9. 如何实现MySQL数据库的备份与恢复10. MySQL mysqladmin客户端的使用简介

网公网安备