1、limit 分页
# limit 语法
SELECT * FROM table LIMIT stratIndex,pageSize
SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
#为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
#如果只给定一个参数,它表示返回最大的记录行数目:
SELECT * FROM table LIMIT 5; //检索前 5 个记录行
#换句话说,LIMIT n 等价于 LIMIT 0,n。
limit 分页实现步骤:
- 接口方法,需要传入两个参数:stratIndex、pageSize
List<Student> selecLimit(Map<String, Integer> map);
//或使用
List<Student> selecLimit(自定义类型的对象,传入同名属性就行);
- mapper 文件
<select id="selecLimit" resultType="Student">
select * from student limit #{startIndex},#{pageSize}
</select>
- 测试方法
@Test
public void testSelectUser() {
SqlSession session = MybatisUtil.getSession();
StudentDao dao = session.getMapper(StudentDao.class);
int currentPage = 1; //第几页
int pageSize = 10; //每页显示几个
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex", (currentPage-1)*pageSize);
map.put("pageSize", pageSize);
List<Student> students = mapper.selecLimit(map);
}
2、分页插件PageHelper
实现步骤:
- 导入 Maven 依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
- 在 MyBatis 主配置文件中配置 <plugin> ,在 <environments> 之前添加
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>
- 接口方法
List<Student> selectOnePage();
- mapper 文件
<select id="selectOnePage" resultType="student">
<!-- 先按年龄排个序 -->
select * from student order by age
</select>
- PageHelper 对象
查询语句之前调用PageHelper.startPage
静态方法。
除了PageHelper.startPage
方法外,还提供了类似用法的PageHelper.offsetPage
方法。
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。
@Test
public void testSelectOnePage() throws IOException {
//获取第 2 页,每页 3 条内容
PageHelper.startPage(1, 3);
List<Student> studentList = studentDao.selectOnePage();
studentList.forEach( stu -> System.out.println(stu));
}