如何使用MyBatis-Plus快速实现自定义SQL分页?
🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。
本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
前言
在Web应用中,分页是非常常见的需求。MyBatis-Plus是基于MyBatis的一款插件,提供了丰富的快速开发功能。本文将介绍如何使用MyBatis-Plus的自定义sql分页功能来进行分页操作。
前置知识
- Spring Boot基础知识
- MyBatis-Plus基础知识
- MySQL基础知识
基本思路
MyBatis-Plus提供了自定义sql分页的实现方式,基本思路如下:
通过自定义sql查询出总记录数。
根据总记录数和每页显示数计算出总页数。
根据页码、每页显示数和总记录数计算出当前页需要查询的记录行数。
使用自定义sql进行分页查询。
将查询结果和分页信息封装成Page对象返回。
环境准备
在开始之前,需要准备好以下环境:
- JDK 1.8+
- Spring Boot 2.0+
- MyBatis-Plus 3.0+
- MySQL 5.7+
实现步骤
1. 添加MyBatis-Plus依赖
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
2. 配置MyBatis-Plus
在application.properties文件中添加以下配置:
# 数据库连接配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# MyBatis-Plus配置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.example.demo.entity
3. 编写Mapper
创建UserMapper.java文件,并通过注解的方式声明自定义sql查询方法:
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("select count(*) from user")
Integer selectCount();
@Select("select * from user limit #{offset}, #{size}")
List<User> selectPage(@Param("offset") Integer offset, @Param("size") Integer size);
}
4. 编写Service
创建UserService.java文件,并实现分页查询方法:
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public Page<User> selectPage(Integer current, Integer size) {
// 查询总记录数
Integer count = userMapper.selectCount();
// 计算总页数
Integer pageCount = (count - 1) / size + 1;
// 计算当前页需要查询的记录行数
Integer offset = (current - 1) * size;
// 查询当前页记录
List<User> userList = userMapper.selectPage(offset, size);
// 构建Page对象
Page<User> page = new Page<>(current, size, count);
page.setRecords(userList);
return page;
}
}
5. 测试分页查询
创建UserController.java文件,并添加分页查询接口:
@RestController
public class UserController {
@Autowired
UserService userService;
@GetMapping("/users")
public Page<User> selectPage(@RequestParam(defaultValue = "1") Integer current, @RequestParam(defaultValue = "10") Integer size) {
return userService.selectPage(current, size);
}
}
启动应用后,访问http://localhost:8080/users即可进行分页查询。
测试用例
为了验证分页查询的正确性,我们可以编写如下的测试用例:
@SpringBootTest
class UserServiceTest {
@Autowired
UserService userService;
@Test
public void testSelectPage() {
Integer current = 2;
Integer size = 10;
Page<User> page = userService.selectPage(current, size);
Assert.assertEquals(current, page.getCurrent());
Assert.assertEquals(size, page.getSize());
Assert.assertNotNull(page.getRecords());
}
}
除此之外,你也可以使用在线接口测试接口返回值,例如查看swagger返回值,具体请看如下截图,明显可以看到分页参数皆已成功返回,具体数据条是被自动封存在records集合中,这里就不一一展示啦。
具体截图所示:
查看接口返回值,分页参数也是无误的,如果存在偶然,可以再次传不同的分页参数进行自验。要我说,mp的是分页是准确无误的,所以请大家放心品尝吧。
小结
本文主要介绍了如何使用MyBatis-Plus的自定义sql分页实现分页查询,并提供了完整的示例代码。通过本文的学习,读者可以深入了解MyBatis-Plus的分页功能,掌握自定义sql分页的使用方法。
总结
本文详细介绍了使用MyBatis-Plus插件实现自定义sql分页的方法,并且提供了完整的示例代码。在分页查询中,自定义sql分页是非常常用的方式,通过自定义sql语句可以更灵活地满足不同的查询需求。使用MyBatis-Plus插件可以极大地简化分页查询的开发工作,提高开发效率。读者可以通过本文的介绍,深入了解MyBatis-Plus的分页功能,并掌握自定义sql分页的使用方法。
附录源码
如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。
☀️建议/推荐你
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
📣关于我
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。
- 点赞
- 收藏
- 关注作者
评论(0)