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

前言:

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

正片:

专业版,听起来就高大上

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

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

sql 复制代码
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)* 查询最大值

代码化

java 复制代码
@Data
public class reqPage {

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

    int pageNo;
    int Max;

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

写映射

java 复制代码
<?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作为参数

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

相关推荐
10km23 分钟前
java:Apache Commons Configuration2占位符解析异常的正确解法:${prefix:name:-default}
java·apache·configuration2·变量插值·interpolation
customer0823 分钟前
【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
qq_4592384927 分钟前
SpringBoot整合Redis和Redision锁
spring boot·redis·后端
灰色人生qwer31 分钟前
SpringBoot 项目配置日志输出
java·spring boot·后端
2301_7930698241 分钟前
Spring Boot +SQL项目优化策略,GraphQL和SQL 区别,Spring JDBC 等原理辨析(万字长文+代码)
java·数据库·spring boot·sql·jdbc·orm
Earth explosion1 小时前
Spring Boot:开启快速开发新时代
spring boot
阿华的代码王国1 小时前
【从0做项目】Java搜索引擎(6)& 正则表达式鲨疯了&优化正文解析
java·后端·搜索引擎·正则表达式·java项目·从0到1做项目
服务端相声演员1 小时前
Oracle JDK、Open JDK zulu下载地址
java·开发语言
是姜姜啊!1 小时前
java连接redis
java·redis
hhw1991121 小时前
spring boot知识点5
java·数据库·spring boot