[Mybatis de l'entrée au didacticiel de combat réel] Chapitre 8 Plug-in de pagination Mybatis PageHelper

Huit, plug-in de pagination Mybatis PageHelper

8.1 Importer le package jar du plug-in de pagination

Méthode 1 : Importer le package jar

 Méthode 2 : configurer les dépendances maven

<!-- PageHelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.10</version>
</dependency>

8.2 Configurer le plugin de pagination

8.2.1 Configurer le plug-in intercepteur dans le fichier de configuration globale MyBatis

<!-- 分页插件 -->
<plugins>
    <!--  
		interceptor属性:配置PageHelper插件中的核心拦截器类;
		PageInterceptor拦截器类(类似于JavaWeb阶段的过滤器):
			该拦截器的作用是在查询SQL执行之前,将编写的SQL语句改造成分页查询语句;
	-->
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

8.2.2 Configurer les propriétés du plug-in

Nom d'attribut Valeurs par défaut décrire
dialecte d'assistance Le plug-in de pagination détectera automatiquement la connexion actuelle à la base de données et sélectionnera automatiquement la méthode de pagination appropriée. Vous pouvez configurer la propriété helperDialect pour spécifier le dialecte utilisé par le plug-in de pagination. Lors de la configuration, vous pouvez utiliser les valeurs abrégées suivantes : oracle, mysql, mariadb, sqlite, hsqldb, postgresql, db2, sqlserver, informix, h2, sqlserver2012, derby
offsetAsPageNum FAUX Ce paramètre est valide lorsque RowBounds est utilisé comme paramètre de pagination. Lorsque ce paramètre est défini sur true, le paramètre de décalage dans RowBounds sera utilisé comme pageNum, et le numéro de page et la taille de page peuvent être utilisés pour la pagination.
rowBoundsWithCount FAUX Ce paramètre est valide lors de l'utilisation de RowBounds comme paramètre de pagination. Lorsque ce paramètre est défini sur true, l'utilisation de la pagination RowBounds exécute une requête de comptage
pageTailleZéro FAUX Lorsque ce paramètre est défini sur true, si pageSize=0 ou RowBounds.limit=0, tous les résultats seront interrogés, ce qui équivaut à aucune requête de pagination, mais le résultat renvoyé est toujours de type Page
raisonnable FAUX Paramètre de rationalisation de la pagination Lorsque la rationalisation est activée, si pageNum<1 interrogera la première page, si pageNum>pages interrogera la dernière page Lorsque la rationalisation est désactivée, si pageNum<1 ou pageNum>pages renverront des données vides
paramètres pageNum=pageNum; pageSize=pageSize ; compte=compteSql ; raisonnable=raisonnable ; pageSizeZero=pageSizeZero Afin de prendre en charge la méthode startPage(Object params), ce paramètre est ajouté pour configurer le mappage des paramètres, qui est utilisé pour obtenir la valeur de l'objet en fonction du nom de l'attribut. Vous pouvez configurer pageNum, pageSize, count, pageSizeZero, raisonnable , et utilisez la valeur par défaut si vous ne configurez pas le mappage
supportMéthodesArguments FAUX Prise en charge de la transmission des paramètres de pagination via les paramètres de l'interface Mapper Le plug-in de pagination prendra automatiquement des valeurs à partir des valeurs de paramètre de la méthode de requête en fonction des champs configurés dans params ci-dessus, et paginera automatiquement lorsqu'il trouvera une valeur appropriée
autoRuntimeDialectautoRuntimeDialect FAUX Lorsqu'il est défini sur true, il est permis d'identifier automatiquement la pagination du dialecte correspondant en fonction de plusieurs sources de données lors de l'exécution
fermerConn vrai Lorsque la source de données dynamique d'exécution est utilisée ou que la propriété helperDialect n'est pas définie pour obtenir automatiquement le type de base de données, une connexion à la base de données est obtenue automatiquement. Cette propriété est utilisée pour définir s'il faut fermer la connexion obtenue. La valeur par défaut est true et closed. Après l'avoir défini sur false, l'acquisition ne sera pas fermée, le réglage de ce paramètre dépend de la source de données que vous choisissez
<!-- 分页插件 -->
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!-- 开启合理化分页-->
        <property name="reasonable" value="true"/>
    </plugin>
</plugins>

8.3 Utilisation dans le programme

8.3.1 Classes d'entités

public class Emp {

    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double sal;
    private Double comm;
    private Integer deptno;

    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Integer getMgr() {
        return mgr;
    }

    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }

    public Date getHiredate() {
        return hiredate;
    }

    public void setHiredate(Date hiredate) {
        this.hiredate = hiredate;
    }

    public Double getSal() {
        return sal;
    }

    public void setSal(Double sal) {
        this.sal = sal;
    }

    public Double getComm() {
        return comm;
    }

    public void setComm(Double comm) {
        this.comm = comm;
    }

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "empno=" + empno +
                ", ename='" + ename + '\'' +
                ", job='" + job + '\'' +
                ", mgr=" + mgr +
                ", hiredate=" + hiredate +
                ", sal=" + sal +
                ", comm=" + comm +
                ", deptno=" + deptno +
                '}';
    }
}

8.3.2 interface du mappeur

public interface EmpMapper {

    List<Emp> selectByPage();
}

8.3.3 fichier mappeur

<?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.newcapec.mapper.EmpMapper">

    <!--使用PageHelper插件实现分页,SQL语句无需编写任何和分页相关的内容-->
    <select id="selectByPage" resultType="com.newcapec.entity.Emp">
        select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by empno
    </select>
</mapper>

8.3.4 Essais

public class PageHelperTest {

    @Test
    public void testPageHelper() {
        SqlSession sqlSession = MybatisUtil.getSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);

        //开启分页拦截器,设置分页的基本属性(当前页面数,每页条数)
        PageHelper.startPage(1, 5);
        List<Emp> empList = empMapper.selectByPage();
        for (Emp emp : empList) {
            System.out.println(emp);
        }

        //分页信息对象
        PageInfo<Emp> pageInfo = new PageInfo<>(empList);
        System.out.println("当前页数:" + pageInfo.getPageNum());
        System.out.println("每页条数:" + pageInfo.getPageSize());
        System.out.println("总记录数:" + pageInfo.getTotal());
        System.out.println("总页数:" + pageInfo.getPages());
        System.out.println("上一页:" + pageInfo.getPrePage());
        System.out.println("下一页:" + pageInfo.getNextPage());
        System.out.println("是否有上一页:" + pageInfo.isHasPreviousPage());
        System.out.println("是否有下一页:" + pageInfo.isHasNextPage());
        System.out.println("是否为首页:" + pageInfo.isIsFirstPage());
        System.out.println("是否为末页:" + pageInfo.isIsLastPage());
        System.out.println("存放页码的数据:" + Arrays.toString(pageInfo.getNavigatepageNums()));
        System.out.println("获取当前页数据:" + pageInfo.getList());
        sqlSession.close();
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/ligonglanyuan/article/details/124420064
conseillé
Classement