美文网首页
102、【JavaEE】【Mybatis】分页插件

102、【JavaEE】【Mybatis】分页插件

作者: yscyber | 来源:发表于2021-10-17 20:57 被阅读0次

1、概述

  • MyBatis PageHelper 是一个常用的 MyBatis 第三方插件,能够使得“分页”的代码编写更简便。

  • 官网网站:https://pagehelper.github.io

2、使用

  • 引入 Maven 依赖
<!-- MySQL -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- MyBatis 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>
  • 在 MyBatis 核心配置文件中配置分页插件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    
    <properties resource="jdbc.properties"/>
    
    <!-- 配置分页插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>

    <environments default="dev">
        <!-- 配置数据源 -->
        <environment id="dev">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc_driver}"/>
                <property name="url" value="${jdbc_url}"/>
                <property name="username" value="${jdbc_username}"/>
                <property name="password" value="${jdbc_password}"/>
            </dataSource>
        </environment>
    </environments>
    
</configuration>
  • 使用分页插件
CREATE TABLE `lg_homework_javaweb_1_student`  (
  `student_uuid` char(32) NOT NULL,
  `student_id` varchar(30) NOT NULL,
  `student_name` varchar(30) NOT NULL,
  `student_gender` char(1) NOT NULL,
  `student_birthday` date NOT NULL,
  `student_email` varchar(128) NOT NULL,
  `student_note` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`student_uuid`) 
) 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Student {

    private String studentUuid;

    private String studentId;

    private String studentName;

    private String studentGender;

    private Date studentBirthday;

    private String studentEmail;

    private String studentNote;

}
import com.yscyber.mybatis.six.pojo.Student;

import java.util.List;

public interface StudentRepo {

    List<Student> listAllStudents();

}
<?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="com.yscyber.mybatis.six.repo.StudentRepo">

    <select id="listAllStudents" resultType="Student">
        SELECT *
        FROM lg_homework_javaweb_1_student
    </select>

</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    
    <properties resource="jdbc.properties"/>
    
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <typeAliases>
        <package name="com.yscyber.mybatis.six.pojo"/>
    </typeAliases>
    
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>

    <environments default="dev">
        <!-- 配置数据源 -->
        <environment id="dev">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc_driver}"/>
                <property name="url" value="${jdbc_url}"/>
                <property name="username" value="${jdbc_username}"/>
                <property name="password" value="${jdbc_password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper class="com.yscyber.mybatis.six.repo.StudentRepo"/>
    </mappers>
    
</configuration>
    @Test
    public void test1() {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            SqlSession sqlSession = sqlSessionFactory.openSession();

            StudentRepo studentRepo = sqlSession.getMapper(StudentRepo.class);

            PageHelper.startPage(3, 10);
            List<Student> studentList = studentRepo.listAllStudents();
            for (Student student : studentList) {
                System.out.println(student);
            }

            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void test1() {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            SqlSession sqlSession = sqlSessionFactory.openSession();

            StudentRepo studentRepo = sqlSession.getMapper(StudentRepo.class);

            // 执行查询方法前,开始分页
            PageHelper.startPage(3, 10);

            List<Student> studentList = studentRepo.listAllStudents();
            for (Student student : studentList) {
                System.out.println(student);
            }

            // 获取分页信息
            PageInfo<Student> pageInfo = new PageInfo<>(studentList);
            System.out.println(pageInfo.getPages());
            System.out.println(pageInfo.getPageNum());
            System.out.println(pageInfo.getPageSize());
            System.out.println(pageInfo.toString());

            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

相关文章

网友评论

      本文标题:102、【JavaEE】【Mybatis】分页插件

      本文链接:https://www.haomeiwen.com/subject/zduboltx.html