配置


在配置类中注册MybatisPlusInterceptor为bean并将PaginationInnerInterceptor添加到MybatisPlusInterceptor中。

@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
 
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 如果配置多个插件, 切记分页最后添加
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); 
        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
        return interceptor;
    }
}

使用


在Serivce中使用

IService<T>接口中定义了以下方法:
<E extends IPage<T>> E page(E page)
<E extends IPage<T>> E page(E page, Wrapper<T> queryWrapper)
定义Page<T>查询对象并使用该方法即可进行分页查询。

@RestController  
@RequestMapping("/user")  
public class UserController {  
  
    @Autowired  
    private IUserService userService;
    
    @GetMapping("/list")
    public void pageQuery(@RequestParam("page") int page) {
		Page<User> page = new Page<>(1, 10);  // 要查询的页数和分页大小
		page.addOrder(new OrderItem("age", true)); // 排序条件,true为升序,false为降序
		page = userService.page(page); // 传入和返回的是同一个page对象
		
		long total = page.getTotal(); // 总条数
		long pages = page.getPages(); // 总页数
		List<User> users = p.getRecords(); // 当前页结果
    }
}