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

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

相关推荐
不会就选b15 分钟前
算法日常・每日刷题--<动态规划>1
java·数据结构·算法
晚安code16 分钟前
JVM 内存结构入门:程序计数器、虚拟机栈、本地方法栈与堆的溢出诊断
java·jvm
自强的小白24 分钟前
Spring事务失效的场景
java·spring
小蒜学长31 分钟前
基于SpringBoot+Vue的小学数学智能出题系统(代码+数据库+LW)
java·数据库·spring boot·后端·智能出题系统
不灭的黄金瞳12336 分钟前
Java继承与多态
java·intellij-idea
企业数字化笔记1 小时前
视频字幕如何烧录到成片?硬字幕、软字幕、样式控制与播放验收
java·ffmpeg
小朱爱编程1231 小时前
我用 Jev 做了三个实用工具:整理标签页、分诊飞书反馈、找回 GitHub 收藏
java·开发语言·人工智能·后端·python·架构·ai编程
酷虎软件1 小时前
视频加标题字幕 API 接口文档
java·数据库·mysql
谢亮_vipxieliang1 小时前
Java 8/11/17/21/25 怎么选?一篇讲清 LTS 升级路线
java·开发语言
Cindy_cd2 小时前
IDEA2021 配置 JDK+Maven
java·开发语言·maven