分页效果 返回data,total,size, pages,current这些参数添加MybatisPlus拦截器 -- 源代码:
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.jx.wms.mapper") //可以将启动类中的注解移到此处
public class MybatisPlusPageConfig {
/**
*
* 1 怎么来配置mybatis-plus中的插件?
* 这里所需要的类型是MybatisPlusInterceptor,这是mybatis-plus的一个拦截器,用于配置mybatis-plus中的插件。
* 2 为什么要使用拦截器MybatisPlusInterceptor呢?
* 这里边的原理和mybatis分页插件的功能是一样的,工作流程如下 :
* (1)第一步:执行查询功能。
* (2)第二步:拦截器对查询功能进行拦截。
* (3)第三步:拦截器对查询功能的基础上做了额外的处理,达到分页的效果(功能)。
* 3 对比配置mybatis中的插件?
* 用的也是拦截器的方式。
*
* @return MybatisPlusInterceptor
*/
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加
//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
return interceptor;
}
}
分页的公用参数:
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.HashMap;
@Data
@ApiModel(value = "通用分页请求入参")
public class PageParam {
private static int PAGE_SIZE = 10;
private static int PAGE_NUM = 1;
@ApiModelProperty(value = "pageSize: 页数")
private int pageSize = PAGE_SIZE;
@ApiModelProperty(value = "pageNum: 页脚")
private int pageNum = PAGE_NUM;
@ApiModelProperty(value = "param: 请求参数")
private HashMap param;
}
分页的Controller里的接口 -- 源代码:
@WebLog(description = "请求了用户信息列表分页接口")
@PostMapping("/listPage")
@ApiOperation(value = "用户分页数据接口")
public Result<IPage<User>> listPage(@RequestBody PageParam page){
Page<User> pageUser = new Page(page.getPageNum(), page.getPageSize());
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, page.getParam().get("name"));
IPage<User> userResult = userService.page(pageUser, queryWrapper);
log.info("user info list user:{}", userResult);
return Result.suc(userResult);
}
然后请求此接口就是我们刚进来看到的图一的数据格式~感谢浏览,希望多指教!