配置
在配置类中注册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(); // 当前页结果
}
}