前言:
通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。
正片:
专业版,听起来就高大上
抛开名字,其实就比通用版多了一个函数,自动计算起点的函数

用于测试的数据库内容,正好有9条数据,又正好能分成3页,每页为3条数据
sqlselect * 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作为参数
大小写很重要,不同会报错