使用MyBatis Plus的分页插件主要分为两个步骤:配置和使用。下面是这两个步骤的详细说明:
1. 配置分页插件
在pom.xml
中添加依赖
确保你的项目中已经添加了MyBatis Plus的依赖。如果你使用的是Maven,请在pom.xml
文件中添加以下依赖:
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version> <!-- 使用最新版本 -->
</dependency>
配置分页插件
在Spring Boot配置类中配置PaginationInterceptor
,这是MyBatis Plus的分页插件。
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean
public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setPlugins(new Interceptor[]{paginationInterceptor()}); // 注册分页插件
return factoryBean.getObject();
}
}
MyBatis Plus 3.4.0及以后,PaginationInterceptor已被废弃,新的分页拦截器PaginationInnerInterceptor被推荐使用。
@Configuration
public class MyBatisPlusConfig {
/**
* 3.4.0之后提供的拦截器的配置方式;
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 添加分页拦截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return mybatisPlusInterceptor;
}
/**
* 配置SqlSessionFactory,将拦截器注册进去
*/
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
// 注册自定义的拦截器
factoryBean.setPlugins(new Interceptor[]{mybatisPlusInterceptor()});
return factoryBean.getObject();
}
}
2. 使用分页插件
创建Mapper接口
创建一个Mapper接口,继承BaseMapper<T>
,其中T
是你实体类的类型。
package com.example.demo.mapper;
import com.example.demo.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}
实现分页查询
使用Page
对象进行分页查询。
package com.example.demo.service;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
@Resource
private UserMapper userMapper;
public Object getUsers(int pageNum, int pageSize) {
// 分页查询
Page<User> page = new Page<>(pageNum, pageSize);
userMapper.selectPage(page, null); // 第二个参数可以是查询条件,这里表示没有特定的查询条件
return page.getRecords(); // 返回分页后的记录列表
}
}