Spring Boot (maven)分页4.0版本 专业版

发布于:2025-02-19 ⋅ 阅读:(24) ⋅ 点赞:(0)
前言:

通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。

正片:

专业版,听起来就高大上

抛开名字,其实就比通用版多了一个函数,自动计算起点的函数

用于测试的数据库内容,正好有9条数据,又正好能分成3页,每页为3条数据

select * from steel.user_test LIMIT 0,3;
select * from steel.user_test LIMIT 3,3;
select * from steel.user_test LIMIT 6,3;

这3条Sql语句正好可以,不重复的查询全部内容

/77777

通用版,我们需要手动去计算起点,现在利用这三条SQL抽象出其中的逻辑,写成代码,便可迭代到专业版(1.0)

我们抽象分为:x = 起点,y = 查询数量,z = 第几页分页

0,3 ,1

3,3 ,2

6,3 ,3

通过这三个元素,去抽象出统一的逻辑

第一页 :有3条数据,从0开始

第二页: 有3条数据,从3开始

第三页: 有3条数据,从6开始

我们的目的是为了算出x的公式

x = 0,z = 3 * 1

x = 3,z = 3 * 2

x = 6,z = 6 * 3

联系在一起

0 = 3 * 1 

3 = 3 * 2

6 = 3 * 3

没办法达成不等式啊,达成不等式

0 = 3 * 0        0 = 3 * 1 

3 = 3 * 1        3 = 3 * 2

6 = 3 * 2        6 = 3 * 3

唯一的不同,在于z的第几页

0 = 3 * (1 - 1)

3 = 3 * (2-  1)

6 = 3 * (3 - 1)

好吧,有点牵强,说结论吧

这里是还大概描述一下作者思考的逻辑吧

总共9条数据:0,1,2,3,4,5,6,7,8

注意:

        计算机的1 = 0,2 = 1

        常识中的1 = 1,2 = 2

本质是因为,计算机采用二进制,常识采用的是十进制

常识1 = 计算机 1 + 1(0 + 1)

我们查询内容,肯定是从第一条开始,可是由于常识和计算机的采用的进制不相同,导致我们的1和计算机的1不是同一概念

第1页 = 0 , 0 * 3 =  0

第2页 = 1 , 1 * 3 = 3

第3页 = 2 , 2 * 3 = 6

但由于进制不同,我们需要将常识1转换成计算机1(0)

根据公式 常识 1 = 计算机 1 + 1

常识1 - 1 = 计算机 1

最总结论如下:

起点 = (页数-1)* 查询最大值

代码化

@Data
public class reqPage {

    /**
     * 页面
     * 最大查询数
     * 查询起点
     */

    int pageNo;
    int Max;

    public Integer getInto(){
        return  (this.pageNo - 1) * Max;
    }
}
@Data
public class UserPageEntity extends reqPage{
    private int id;
    private String username;
    private String author;
}

写映射

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.Mapper.UserMapper">

    <select id="userByAll" resultType="org.example.mybatis.entity.UserPageEntity">
        SELECT * from steel.user_test LIMIT #{into},#{Max}
    </select>
</mapper>

这里说一个mybatis的机制,它会自动映射getxxx的方法作为参数,xxx为参数

mybatis会将自动调用getInto方法,返回数据,并以into作为参数

大小写很重要,不同会报错


网站公告

今日签到

点亮在社区的每一天
去签到