MP提供了很多好用的插件,而且配置简单,使用方便。接下来一起看看MP的插件如何使用。

#1、分页插件: 之前就有说到,BaseMapper的selectPage方法和AR提供的selectPage方法都不是物理分页,需要配置分页插件后才是物理分页,那么现在就来看看如何配置这个插件。 在sqlSessionFactory这个bean中,通过配置插件,接下来的所有插件都配置在这个list中。

<!-- 3、配置mybatisplus的sqlSessionFactory -->
    <bean id="sqlSessionFactory" class=
                       "com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="typeAliasesPackage" value="com.zhu.mybatisplus.entity"/>
        <!-- 注入全局配置 -->
        <property name="globalConfig" ref="globalConfiguration"/>
        <!-- 配置插件 -->
        <property name="plugins">
            <list>
                <!-- 分页插件 -->
                <bean class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
            </list>
        </property>
    </bean>

或者放在mybatis-config.xml中进行配置 MybatisPlus学习笔记7:插件的配置_mybatis

@Test
    public void testPage() {
        //配置了分页插件后,还是和以前一样的使用selectpage方法,
        //但是现在就是真正的物理分页了,sql语句中有limit了
        Page<Employee> page = new Page<>(1, 2);
        List<Employee> employeeList =
                emplopyeeDao.selectPage(page, null);
        System.out.println(employeeList);
        System.out.println("================= 相关的分页信息 ==================");
        System.out.println("总条数:" + page.getTotal());
        System.out.println("当前页码:" + page.getCurrent());
        System.out.println("总页数:" + page.getPages());
        System.out.println("每页显示条数:" + page.getSize());
        System.out.println("是否有上一页:" + page.hasPrevious());
        System.out.println("是否有下一页:" + page.hasNext());
        //还可以将查询到的结果set进page对象中
        page.setRecords(employeeList);
    }

物理分页: MybatisPlus学习笔记7:插件的配置_mybatis_02 也可以通过page调用相关方法获取到相关的分页信息,而且还可以把查询到的结果set回page对象中,方便前端使用。

#2、性能分析插件 在plugin的list中添加如下bean即可开启性能分析插件:

<!-- 输出每条SQL语句及其执行时间,生产环境不建议使用该插件 -->
 <bean class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
        <property name="format" value="true"/><!-- 格式化SQL语句 -->
        <property name="maxTime" value="1000"/><!-- sql执行时间超过value值就会停止执行,
                                                   单位是毫秒 -->
 </bean>

这个性能分析插件配置了两个属性, 第一个是格式化sql语句,设置为true后,sql语句格式就像上面的截图中的一样; 第二个属性是sql语句执行的最大时间,超过value值就会报错,这里表示超过1000毫秒就会停止执行sql语句。

#3、执行分析插件

<!-- 如果是对全表的删除或更新操作,就会终止该操作 -->
<bean class="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">
       <property name="stopProceed" value="true"/>
</bean>

这个插件配置了一个属性,stopProceed设置为true后,如果执行的是删除表中全部内容,那就会抛出异常,终止该操作。 该插件主要是防止手抖误删数据。

@Test
public void testSqlExplain(){
        //条件为null,就是删除全表,执行分析插件会终止该操作
    emplopyeeDao.delete(null);
}

MybatisPlus学习笔记7:插件的配置_mybatis_03