【愚公系列】2023年03月 Java教学课程 117-Mybatis(分页插件)

2023-04-04 09:25:37 浏览数 (1)

文章目录

  • 一、分页插件
    • 1.分页插件介绍
    • 2.分页插件的使用
    • 3.分页插件的参数获取
    • 4.分页插件知识小结

一、分页插件

1.分页插件介绍

MyBatis的分页插件是一个用于处理分页查询的插件,它可以在SQL执行之前拦截SQL语句并添加分页参数,从而实现分页查询。

该插件提供了以下几个主要功能:

  • 分页查询:支持按照指定的页数和每页条数进行分页查询。
  • 总条数查询:支持查询符合条件的总条数。
  • 自动分页:支持自动根据查询结果的总条数进行分页。
  • 支持多种数据库:支持MySQL、Oracle、SQL Server等多种数据库。

MyBatis的分页插件可以大大简化分页查询的实现过程,提高开发效率。

2.分页插件的使用

MyBatis可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据

开发步骤:

①导入与PageHelper的jar包

②在mybatis核心配置文件中配置PageHelper插件

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--configuration 核心根标签-->
<configuration>

    <!--引入数据库连接的配置文件-->
    <properties resource="jdbc.properties"/>

    <!--配置LOG4J-->
    <settings>
        <setting name="logImpl" value="log4j"/>
    </settings>

    <!--起别名-->
    <typeAliases>
        <typeAlias type="com.itheima.bean.Student" alias="student"/>
        <!--<package name="com.itheima.bean"/>-->
    </typeAliases>

    <!--集成分页助手插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

    <!--environments配置数据库环境,环境可以有多个。default属性指定使用的是哪个-->
    <environments default="mysql">
        <!--environment配置数据库环境  id属性唯一标识-->
        <environment id="mysql">
            <!-- transactionManager事务管理。  type属性,采用JDBC默认的事务-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- dataSource数据源信息   type属性 连接池-->
            <dataSource type="POOLED">
                <!-- property获取数据库连接的配置信息 -->
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- mappers引入映射配置文件 -->
    <mappers>
        <!-- mapper 引入指定的映射配置文件   resource属性指定映射配置文件的名称 -->
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

3.分页插件的参数获取

代码语言:javascript复制
public void selectPaging() throws Exception{
    //1.加载核心配置文件
    InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");

    //2.获取SqlSession工厂对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

    //3.通过工厂对象获取SqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession(true);

    //4.获取StudentMapper接口的实现类对象
    StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);

    //通过分页助手来实现分页功能
    // 第一页:显示3条数据
    //PageHelper.startPage(1,3);
    // 第二页:显示3条数据
    //PageHelper.startPage(2,3);
    // 第三页:显示3条数据
    PageHelper.startPage(3,3);

    //5.调用实现类的方法,接收结果
    List<Student> list = mapper.selectAll();

    //6.处理结果
    for (Student student : list) {
        System.out.println(student);
    }

    //获取分页相关参数
    PageInfo<Student> info = new PageInfo<>(list);
    System.out.println("总条数:"   info.getTotal());
    System.out.println("总页数:"   info.getPages());
    System.out.println("当前页:"   info.getPageNum());
    System.out.println("每页显示条数:"   info.getPageSize());
    System.out.println("上一页:"   info.getPrePage());
    System.out.println("下一页:"   info.getNextPage());
    System.out.println("是否是第一页:"   info.isIsFirstPage());
    System.out.println("是否是最后一页:"   info.isIsLastPage());

    //7.释放资源
    sqlSession.close();
    is.close();
}

4.分页插件知识小结

  • 分页助手相关 API
代码语言:javascript复制
1. PageHelper:分页助手功能类。
2. startPage():设置分页参数 
3. PageInfo:分页相关参数功能类。 
4. getTotal():获取总条数 
5. getPages():获取总页数
6. getPageNum():获取当前页
7. getPageSize():获取每页显示条数
8. getPrePage():获取上一页 
9. getNextPage():获取下一页 
10. isIsFirstPage():获取是否是第一页 
11. isIsLastPage():获取是否是最后一页    

0 人点赞