MP提供了很多好用的插件,而且配置简单,使用方便。接下来一起看看MP的插件如何使用。
1、分页插件:
之前就有说到,BaseMapper的selectPage方法和AR提供的selectPage方法都不是物理分页,需要配置分页插件后才是物理分页,那么现在就来看看如何配置这个插件。
在sqlSessionFactory这个bean中,通过
<!-- 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中进行配置
@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);
}
物理分页:
也可以通过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);
}