错误的写法:
<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函数,如下:
到此这篇关于MyBatis limit分页设置的实现的文章就介绍到这了,更多相关MyBatis limit分页内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!