欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MybatisPlus真假分页----分页插件

程序员文章站 2022-07-13 09:13:29
...

SSM整合mybatisPlus: link
假分页:
mybatisPlus里有一个page对象,通过内存实现的。观察sql可以发现不是用limit实现的。
真分页:
mybatisPlus在spring核心配置文件中注册分页插件,是使用limit实现的。

实现假分页:
前面的代码直接拿之前写的SSM整合mybatisPlus进。链接
在EmpController.java中添加一个方法:

    /**
     * 分页:第一页,每页显示三条数据,注意(没有注册分页插件的就是假分页,是使用内存实现的,不建议使用)
     * 查询部门编号为30的员工信息
     * new Page()对象可以得到一个page对象,里面有分页的各种信息和查询出来的数据信息,通过page.getRecords()获取。
     * Condition.create()是添加条件,eq(column,params) 等于,参数左边是条件的列,右边是值。
     *
     * @return
     */
    @RequestMapping("/findPageEmpList")
    public ModelAndView findPageEmpList(){
        Page page = empService.selectPage(new Page<Emp>(1, 3), Condition.create().eq("deptno", 30));
        ModelAndView modelAndView = new ModelAndView();
        List<Emp> empList = page.getRecords();
        modelAndView.addObject("empList",empList);
        modelAndView.setViewName("emplist");
        return modelAndView;
    }

测试前查看数据库完整数据:
MybatisPlus真假分页----分页插件
页面效果:部门为30的雇员有四条数据,显示三条,分页成功!
MybatisPlus真假分页----分页插件

控制台输出:
MybatisPlus真假分页----分页插件
确实没有limit,而且成功实现了分页。

插件分页:只需要在假分页的基础上注册分页插件,就是真分页了。
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
    <!--文件引入-->
    <context:property-placeholder location="classpath:db/db.properties"></context:property-placeholder>
    <!--数据源-->
    <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--SqlSessionFactoryBean-->
    <bean class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean" id="sqlSessionFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.ssm.entity"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <!--分页插件-->
        <property name="plugins">
            <list>
                <bean class="com.baomidou.mybatisplus.plugins.PaginationInterceptor" id="paginationInterceptor"/>
            </list>
        </property>
    </bean>
    <!--mapper接口扫描-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.ssm.mapper"/>
    </bean>
</beans>

重新运行:页面效果和之前一样,实现了分页
MybatisPlus真假分页----分页插件
控制台输出:sql语句也有了limit,插件分页成功。
MybatisPlus真假分页----分页插件
总结:使用mybatisPlus提供的page对象如果注册了分页插件就是真分页,否则就是假的。假分页不建议使用,大量数据会导致内存占用高,甚至卡死!