Mybatis-Plus分页
时间:2022-07-22
本文章向大家介绍Mybatis-Plus分页,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在做项目的时候,分页几乎是必备的。
过去我们使用Mybatis+PageHelper,随着Mybatis-Plus的流行,本人也是深受”其害“。
MP真的太好用了,他一点也不影响你过去在Mybatis留下来的使用习惯。
至少我是这样,虽然它自带了很多CRUD方法,但是我更喜欢手写一套Mapper.xml,不然心里总很奇怪。
下面我们进入正题,Mybatis-Plus本身自带了分页插件。我们引入了MP就可以了。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
官方文档关于分页插件的使用已经写得很清楚,这里我就更详细的来讲一下整个过程。
首先我们需要注入Bean,让分页生效
这里你可以新建一个package(config),用来放配置类,MapperScan注解中填写的是你的mapper层。其他不用修改。
@EnableTransactionManagement
@Configuration
@MapperScan("com.xn2001.scoa.mapper")
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
// 开启 count 的 join 优化,只针对 left join !!!
return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize(true));
}
}
下面我用自己的项目案例直接作为演示。
我们来到mapper接口层,在查询方法中传入参数Page<T> page
T是你的封号好的JavaBean
@Mapper
public interface CourseMapper extends BaseMapper<CourseResult> {
List<CourseResult> selectCredit(Page<CourseResult> page);
}
好了,xml中的sql语句不需要改,不用管。下面来到Service层
接口:
public interface CourseService {
List<CourseResult> selectCreditPage(Page<CourseResult> page);
}
实现类:
@Service
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseMapper courseMapper;
@Override
public List<CourseResult> selectCreditPage(Page<CourseResult> page) {
return courseMapper.selectCredit(page);
}
}
到这里业务代码就OK了,你可以选择去Test中测试。这里我直接用mapper层来测试,道理是一样的。
@Test
public void t5(){
Page<CourseResult> page = new Page<>(0, 2);
List<CourseResult> resultIPage = courseMapper.selectCredit(page);
System.out.println(resultIPage);
}
测试成功后,我们怎么样放到controller层跟前端交互了,相信你看到上面测试类时就已经有答案了。
new 一个Page,传入当前页面和数量,例如,我需要第二页的5条,new Page<>(1, 5);
@GetMapping("/select/creditPage/{current}/{size}")
public RespBean selectCreditPage(@PathVariable("current") Integer current, @PathVariable("size") Integer size){
Page<CourseResult> page = new Page<>(current, size);
List<CourseResult> results = courseService.selectCreditPage(page);
return RespBean.ok("查询成功",results);
}
- Android View体系(十一)自定义ViewGroup
- Java并发编程(四)Java内存模型
- Android View体系(十)自定义组合控件
- 算法(一)时间复杂度
- Android Studio详细安装流程和配置、主题
- html5 jqueryrotate插件实现旋转动画
- 为什么要使用String
- Android网络编程(十一)源码解析Retrofit
- android Material Design详解
- android EventBus详解(三)
- Android绘制优化(一)绘制性能分析
- android EventBus详解(二)
- [置顶] android EventBus详解(一)
- 开源组件photoView学习
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP 使用位运算实现四则运算的代码
- linux操作系统下配置ssh/sftp和权限设置办法
- 15分钟并行神器gnu parallel入门指南
- php实现验证邮箱格式的代码实例
- Packetdrill的简明使用手册
- Laravel5.1 框架模型远层一对多关系实例分析
- Linux系统中时间的获取和使用
- thinkphp5.1验证码及验证码验证功能的实现详解
- LNMP部署及HTTPS服务开启教程
- Laravel5.1 框架模型多态关联用法实例分析
- Laravel5.1 框架分页展示实现方法实例分析
- composer安装的方法步骤(图文)
- Linux双网卡绑定脚本的办法示例
- thinkphp调用sqlserver储存过程返回多个结果集
- php命名空间设计思想、用法与缺点分析