持续学习&持续更新中…
守破离
【Java从零到架构师第③季】【06】MyBatis-分页-PageHelper
回顾MySQL的分页查询
-
MySQL:表中的数据,行是从0开始的,列是从1开始的
-
假设每页15条数据
-
SELECT * FROM student LIMIT 0, 15; # 查询第一页
-
SELECT * FROM student LIMIT 15, 15; # 查询第二页
-
SELECT * FROM student LIMIT (n - 1) * pageSize, pageSize; # n代表第n页
-
计算总页数
假设:
总数量:101条;每一页显示20条。
公式:
总页数 =(总数量 + 每页的数量 - 1) / 每页的数量
总页数 =(101 + 20 - 1) / 20
不同数据库的分页查询
MyBatis分页插件 - PageHelper
https://github.com/pagehelper/Mybatis-PageHelper
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
https://apidoc.gitee.com/free/Mybatis_PageHelper/
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.0</version>
</dependency>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- true代表分页合理化:pageNum <= 0就会自动获取第1页,pageNum > pages就会自动获取最后1页 -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
<?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="skill">
<select id="list" resultType="Skill">
SELECT id, created_time, name, level FROM skill
</select>
</mapper>
public static void main(String[] args) {
try (SqlSession sqlSession = Mybaties.openSession()) {
// PageHelper.startPage(1, 10); // 查询第1页,每页10条
PageHelper.startPage(2, 10); // 查询第2页,每页10条
List<Skill> lists = sqlSession.selectList("skill.list");
for (Skill skill : lists) {
System.out.println(skill);
}
}
}
注意
- https://mybatis.io/
- 向大牛学习:Mybatis-PageHelper作者:https://blog.csdn.net/isea533
参考
小码哥-李明杰: Java从0到架构师③进阶互联网架构师.
本文完,感谢您的关注支持!