当前位置: 首页 > news >正文

分页功能实现

大家好 , 我是苏麟 , 今天聊一聊分页功能 .

Page分页构造器是mybatisplus包中的一个分页类 .

Page分页

引入依赖

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency>

配置

/*** 配置MP的分页插件*/
@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}
}

分页查询的实现

   /*** 分页查询* @param page* @param pageSize* @param name* @return*/@GetMapping("/page")public R<Page> page(@RequestParam(required = false, defaultValue = "1") int page,@RequestParam(required = false, defaultValue = "10") int pageSize,String name){log.info("page = {},pageSize = {},name = {}" ,page,pageSize,name);//构造分页构造器Page pageInfo = new Page(page,pageSize);//构造条件构造器LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();//添加过滤条件queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);//添加排序条件queryWrapper.orderByDesc(Employee::getUpdateTime);//执行查询employeeService.page(pageInfo,queryWrapper);return R.success(pageInfo);}

无条件查询

  @GetMapping("/page")public R<Page> page(int page,int pageSize,String name){//构造分页构造器对象Page pageInfo = new Page<>(page,pageSize);//执行分页查询dishService.page(pageInfo, null);return R.success(page);}

PageHelper

PageHelper官网 : MyBatis 分页插件 PageHelper

 开始使用

引入依赖

        <!--Mybatis 中分页插件 pageHelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency>

 在spring boot 配置

Spring Boot 引入 starter 后自动生效,对分页插件进行配置时,在 Spring Boot 对应的配置文件中配置:

properties : 

pagehelper.propertyName=propertyValue
pagehelper.reasonable=false
pagehelper.defaultCount=true

yml :

pagehelper:propertyName: propertyValuereasonable: falsedefaultCount: true # 分页插件默认参数支持 default-count 形式,自定义扩展的参数,必须大小写一致

准备一些数据

测试

    @Testvoid mybatisTest() {PageHelper.startPage(1,2);Page<User> list = (Page<User>) userMapper.list();System.out.println(list);}

测试结果 

分页插件还支持的几种方法(官方给出的方式)

//第一种,RowBounds方式的调用
List<User> list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(0, 10));//第二种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.startPage(1, 10);
List<User> list = userMapper.selectIf(1);//第三种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.offsetPage(1, 10);
List<User> list = userMapper.selectIf(1);//第四种,参数方法调用
//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数
public interface CountryMapper {List<User> selectByPageNumSize(@Param("user") User user,@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);
}
//配置supportMethodsArguments=true
//在代码中直接调用:
List<User> list = userMapper.selectByPageNumSize(user, 1, 10);//第五种,参数对象
//如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页
//有如下 User 对象
public class User {//其他fields//下面两个参数名和 params 配置的名字一致private Integer pageNum;private Integer pageSize;
}
//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数
public interface CountryMapper {List<User> selectByPageNumSize(User user);
}
//当 user 中的 pageNum!= null && pageSize!= null 时,会自动分页
List<User> list = userMapper.selectByPageNumSize(user);//第六种,ISelect 接口方式
//jdk6,7用法,创建接口
Page<User> page = PageHelper.startPage(1, 10).doSelectPage(new ISelect() {@Overridepublic void doSelect() {userMapper.selectGroupBy();}
});
//jdk8 lambda用法
Page<User> page = PageHelper.startPage(1, 10).doSelectPage(()-> userMapper.selectGroupBy());//也可以直接返回PageInfo,注意doSelectPageInfo方法和doSelectPage
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(new ISelect() {@Overridepublic void doSelect() {userMapper.selectGroupBy();}
});
//对应的lambda用法
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> userMapper.selectGroupBy());//count查询,返回一个查询语句的count数
long total = PageHelper.count(new ISelect() {@Overridepublic void doSelect() {userMapper.selectLike(user);}
});
//lambdatotal=PageHelper.count(()->userMapper.selectLike(user));

更详细的请看官方文档 .

这期就到这里 , 下期见 !

拜拜 !

http://www.lryc.cn/news/152061.html

相关文章:

  • 普通制造型企业,如何成就“链主品牌
  • 04_22 vma(进程下的每个虚拟内存区域查看)对象实战
  • QWidget的ui界面绘制成图片
  • 【ICer的脚本练习】脚本使用的思维培养 —— 用例回归
  • 【axios网络请求库】认识Axios库;axios发送请求、创建实例、创建拦截器、封装请求
  • Android——基本控件(下)(二十一)
  • websocket基础
  • 游戏思考30(补充版):关于逆水寒铁牢关副本、白石副本和技能的一些注释(2023/0902)
  • 【数据蒸馏】静态数据蒸馏方法汇总
  • Cortex-A7 架构
  • 2023年“羊城杯”网络安全大赛 Web方向题解wp 全
  • Matlab——二维绘图(最为详细,附上相关实例)
  • JVM学习(四)--内存问题分析思路
  • 【MySQL】七种SQL优化方式 你知道几条
  • MySQL8.xx 解决1251 client does not support ..解决方案
  • SpringBoot常用的简化开发注解
  • python相关
  • C语言的类型转换
  • 从零构建深度学习推理框架-11 Resnet
  • 多线程练习-顺序打印
  • 一文读懂MQTT各参数定义(非ChatGPT生成版)
  • redis-lua脚本-无参-比较2个数值
  • Lesson5-1:OpenCV视频操作---视频读写
  • Lesson5-2:OpenCV视频操作---视频追踪
  • 1778_树莓派系统安装
  • 关闭jenkins插件提醒信息
  • JixiPix Artista Impresso Pro for mac(油画滤镜效果软件)
  • 机器学习之 Jupyter Notebook 使用
  • Unity引擎修改模型顶点色的工具
  • linux安装minio以及springboot整合使用