mybatis-plus实现分页,mybatisplus分页插件使用

  mybatis-plus实现分页,mybatisplus分页插件使用

  

目录

一、MyBatisPlusConfig中配置分页插件1.分页实现的原理二、统一结果集1.创建返回码定义类2.创建结果集类三、编写分页接口1.先编写查询类2.服务层3.控制器层4.接口测试总结

 

  

一、MyBatisPlusConfig中配置分页插件

/** * 配置分页插件* @ return page */@ Bean公共分页拦截器pagination interceptor(){ pagination interceptor pagination interceptor=new pagination interceptor();//开启数数的加入优化,只针对部分左连接分页拦截器。setcountsqlparser(新的jsql解析器计数优化(true));返回分页拦截器}

 

  

1. 分页实现的原理

Mybatis-plus分页插件使用的是东方网页王进行分页10 .英语字母表中第九个字母页面内部原理是基于拦截器,拦截的是方法以及方法中的参数。判断是否是查询操作,如果是查询操作,才会进入分页的处理逻辑。 进入分页逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在东方网页王对象的实现类。如果不存在则不进行分页,存在则将该参数赋值给东方网页王对象,然后进行拼接结构化查询语言的处理完成分页操作。

 

  

二、统一结果集

 

  

1. 创建返回码定义类

公共类结果代码{ /** *成功* */public final static int OK=20000;/** * 失败* */public final static int ERROR=20001;/** * 用户名或密码错误* */public final static int log in _ ERROR=20002;/** * 权限不足* */public final static int ACCESS _ ERROR=20003;/** * 远程调用失败* */public final static int REMOTE _ ERROR=20004;/** * 重复操作* */public final static int REPEAT _ ERROR=20005;}

 

  

2. 创建结果集类

@Data@ApiModel(value=全局统一返回结果)公共类英语字母表中第十八个字母实现可序列化的{公共最终静态字符串OK _ MSG=请求成功;公开决赛静态字符串FAIL_MSG=请求失败;@ApiModelProperty(value=是否成功)私布尔成功;@ApiModelProperty(value=返回码)私有整数代码;@ApiModelProperty(value=返回消息)私有字符串消息;@ApiModelProperty(value=返回数据)私有对象数据;@ApiModelProperty(value=总条数)私长总;@ApiModelProperty(value=分页信息)private PageInfo pageInfo@Data公共静态类PageInfo { @ApiModelProperty(当前页)protected int current page @ ApiModelProperty(页大小)受保护的int pageSize@ApiModelProperty(总记

 

  录数") protected long totalCount; @ApiModelProperty("总页数") protected long totalPage; public PageInfo() { } @ConstructorProperties({"currentPage", "pageSize", "totalCount", "totalPage"}) public PageInfo(int currentPage, int pageSize, long totalCount, long totalPage) { this.currentPage = currentPage; this.pageSize = pageSize; this.totalCount = totalCount; this.totalPage = totalPage; } } private R(){} private R(int code, String msg, Object data) { this.code = code; this.message = msg; if (data instanceof Page<?>) { Page<?> page = (Page<?>) data; this.total = page.getTotal(); this.data = page.getRecords(); this.pageInfo = new PageInfo((int)page.getCurrent(), (int)page.getSize(), page.getTotal(), page.getPages()); } else { this.data = data; } } public static R ok(){ R r = new R(); r.setSuccess(true); r.setCode(ResultCode.OK); r.setMessage("成功"); return r; } public static R ok(Object data) { return new R(ResultCode.OK, OK_MSG, data); } public static R ok(String msg, Object data) { return new R(ResultCode.OK, msg, data); } public static R error(){ R r = new R(); r.setSuccess(false); r.setCode(ResultCode.ERROR); r.setMessage("失败"); return r; } public static R error(String msg) { return new R(ResultCode.ERROR, msg, null); } public static R error(int errorCode, String msg) { return new R(errorCode, msg, null); } public R message(String message){ this.setMessage(message); return this; } public R code(Integer code){ this.setCode(code); return this; } public R data(Object data){ this.setData(data); return this; }}复制代码

 

  

三、编写分页接口

 

  

1. 先编写查询类

代码如下:

 

  

@Datapublic class MemberQueryVo extends BasePageEntity{ @ApiModelProperty(value = "用户名") private String userName;}

 

  

2. service层

先定义一个查询分页的接口,在实现类里做相关处理

 

  

@Servicepublic class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements MemberService { @Override public IPage<Member> listMemberPage(MemberQueryVo queryVo) { IPage<Member> page = new Page<>(queryVo.getCurrentPage(),queryVo.getCurrentPage()); //条件查询 LambdaQueryWrapper<Member> queryWrapper = new LambdaQueryWrapper<Member>(); if (StringUtils.isNotBlank(queryVo.getUserName())) { queryWrapper.like(Member::getUserName, queryVo.getUserName()); } return baseMapper.selectPage(page,queryWrapper); }}

 

  

3. controller层

编写分页接口,代码如下:

 

  

 @ApiOperation(value = "分页用户列表") @GetMapping(value = "/getPage") public R listPage(MemberQueryVo queryVo){ IPage<Member> page = memberService.listMemberPage(queryVo); return R.ok(page); }

 

  

4. 接口测试

直接通过swagger生成的api接口页面进行测试,当前页、每页参数传1时,返回的分页信息里,总数是两条,只返回了一条数据。说明分页成功。

 

  再进行条件查询的时候,也成功查询对应数据。

  

 

  再进行条件查询的时候,也成功查询对应数据。

  

 

  

 

  

总结

感谢大家的阅读,上就是今天要讲的内容,本文简单介绍了如何配置分页插件、以及分页的原理。如有不足之处,纯属能力有限,还请多多包涵。

 

  到此这篇关于Mybatis-plus配置分页插件返回统一结果集的文章就介绍到这了,更多相关Mybatis-plus分页返回统一结果集内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: