MyBatis limit分页设置的实现

2025-05-29 0 37

错误的写法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
<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之后的语句不允许的变量不允许进行算数运算,会报错。

正确的写法一:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
<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>

正确的写法二:(推荐)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
<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函数,如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
@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分页内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/timchen525/article/details/79647666

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 MyBatis limit分页设置的实现 https://www.kuaiidc.com/108177.html

相关文章

发表评论
暂无评论