MybatisPlus简介
Mybatis(半自动)在持久层框架中是非常火的,一般项目都是基于ssm。虽然mybatis可以直接在xml或注解中通过SQL语句操作数据库,很是灵活。但是其操作都要通过SQL语句进行,就必须写大量的xml文件或者注解,很是麻烦。mybatis-plus(自动)就很好的解决了这个问题。
Mybatis-Plus(简称MP)是 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。
mybatis-plus自带分页插件,那么我们怎么使用mybatis-plus工具完成分页查询呢?
依赖导入
要使用mybatis-plus工具,首先需要在pom文件中导入需要的依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.2</version>
</dependency>
这里的版本不唯一,开发自己的项目可以选择使用最新版本,最新版本可以参考官网或着maven仓库。
添加配置类MyBatisPlusConfig
@Configuration
@MapperScan("com.xxxx.mybatisplus.mapper")
public class MyBatisPlusConfig {
//分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
这个配置类不仅仅可以配置分页插件,还可以配置mybatis-plus的其他插件
例如逻辑删除组件和性能分析组件:
@EnableTransactionManagement//自动管理事务
@Configuration//配置类
public class MyBatisPlusConfig {
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
//逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
//性能分析插件
@Bean
@Profile({"dev","test"})//设置dev开发、test测试 环境开启 保证我们的效率
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(100);//设置sql最大执行时间*ms,如果超过了则不执行
performanceInterceptor.setFormat(true);//开启sql格式化
return performanceInterceptor;
}
}
编写测试方法
@Test
public void testPage(){
//new Page()中的两个参数分别是当前页码,每页显示数量
Page<User> page = userMapper.selectPage(new Page<>(1, 2), null);
List<User> users = page.getRecords();
users.forEach(System.out::println);
}
这里的(1,2)分别代表开始的页数和每页能存放的数据多少,即页面大小
在我们的日常开发中,还可以使用自定义分页
自定义分页
在UserMapper
接口中定义一个方法
**
* 根据年龄查询用户列表,分页显示
* @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位
* @param age 年龄
* @return
*/
Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
在UserMapper.xml
中编写SQL实现该方法
<select id="selectPageVo" resultType="User">
select id,username as name,age,email from t_user where age > #{age}
</select>
编写测试方法
@Test
public void testPageVo(){
Page<User> page = userMapper.selectPageVo(new Page<User>(1,2), 20);
List<User> users = page.getRecords();
users.forEach(System.out::println);
}
以下罗列了一些关于自定义用法的插件使用方法
@Test//测试分页查询
public void testPage(){
//参数一current:当前页 参数二size:页面大小
//使用了分页插件之后,所有的分页操作都变得简单了
Page<User> page = new Page<>(2,5);
userMapper.selectPage(page,null);
page.getRecords().forEach(System.out::println);
System.out.println(page.getCurrent());
System.out.println(page.getSize());
System.out.println(page.hasNext());
System.out.println(page.getPages());//3
System.out.println(page.hasPrevious());
System.out.println("总页数==>"+page.getTotal());
}
完成了以上步骤就可以使用分页插件完成页面的数据传送啦,往前端传送的一般都是我们存在page中的参数,通过session传送到前端,然后在前端页面取出使用。也可以使用ajax利用json格式完成数据的使用。
上述测试结果
以上就是分页插件的使用啦,使用起来非常简单的,有兴趣的伙伴可以动手实验起来。