MyBatis分页功能实现

在开发中我们进发现很多需求是让我们把查到的数据进行分页显示,

1、使用sql分页

我们可以使用limit关键字来对sql语句进行实现分页查询。

select * from 表名 limit [位移偏移量,] 显示行数
偏移量:相当于我们在浏览网页时选择的页数。
显示行数:每页显示的行数。
实例:通过对student表操作,显示不容的页,每页显示行数为10行
select * from student limit 0 , 10 ; //显示第一页的10行数据
select * from student limit 1 , 10 ; //显示第二页的10行数据
select * from student limit 2 , 10 ; //显示第三页的10行数据
select * from student limit 3 , 10 ; //显示第四页的10行数据
select * from student limit (n-1)*10 , 10 ; //显示第n页的10行数据

可以发现在使用sql实现分页查询时,我们是可以通过表达式来指定不同页数显示不同的行数。

接下来就在idea中使用java语言和mybatis框架来实现一下实现sql分页。

先创建一个student表,并插入几条数据

 创建项目、导入依赖、核心配置类,数据库连接数据文件db.properties、我就不多说了。

创建实体类Student类(为了方便我在引入依赖坐标是加了一个lombok,可以省去实体类的get、set等代码)

package com.ltc.pojo;

import lombok.Data;

@Data
public class Student {
    private Integer id;
    private String sno;
    private String sname;
    private Integer age;
    private String sex;
}
<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.26</version>
    </dependency>

创建StudentDao接口(使用注解开发)

package com.ltc.dao;

import com.ltc.pojo.Student;
import org.apache.ibatis.annotations.*;
import java.util.List;

public interface StudentDao {

    @Select("select * from student limit #{page},#{pageSize}")
    List<Student> findStudentPaging(@Param("page") Integer page,@Param("pageSize") Integer pageSize);
}

测试:

import com.ltc.dao.StudentDao;
import com.ltc.pojo.Student;
import com.ltc.util.SqlSessionUtil;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;

public class StudentTest {
    @Test
    public void findStudentPagingTest(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
        int page=2; //简单的给一个页数
        List<Student> students = studentDao.findStudentPaging((page-1)*10, 10);
        for (Student student :students) {
            System.out.println(student);
        }
        sqlSession.close();
    }
}

测试结果

第一页数据

第二页数据

分页查询的好处
约束返回结果的数量可以减少数据表的网络传输量,也可以 提升查询效率 。如果我们知道返回结果只有1 条,就可以使用 LIMIT 1 ,告诉 SELECT 语句只需要返回一条记录即可。这样的好处就是 SELECT不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值