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作为参数

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

相关推荐
野犬寒鸦35 分钟前
MySQL索引使用规则详解:从设计到优化的完整指南
java·数据库·后端·sql·mysql
思考的橙子41 分钟前
Springboot之会话技术
java·spring boot·后端
钰爱&1 小时前
【Linux】POSIX 线程信号量与互斥锁▲
java·开发语言·jvm
黑匣子~3 小时前
java集成telegram机器人
java·python·机器人·telegram
竹小春逢十八3 小时前
Java常用类概述
java
weixin_437398214 小时前
RabbitMQ深入学习
java·分布式·后端·spring·spring cloud·微服务·rabbitmq
Your易元4 小时前
设计模式-迭代器模式
java·开发语言
╭⌒心岛初晴4 小时前
JAVA练习题(2) 找素数
java·开发语言·算法·java练习题·判断素数/质数
purrrew4 小时前
【Java ee初阶】网络原理
java·运维·服务器·网络·网络协议·udp·java-ee
bing_1584 小时前
Spring MVC 视图解析器 (ViewResolver) 如何配置? Spring Boot 是如何自动配置常见视图解析器的?
spring boot·spring·mvc