mybatis-plus分页查询的实现示例
MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多增强功能,包括简化 CRUD 操作、支持 Lambda 形式编写 SQL 查询以及便捷的分页功能。本示例将详细介绍如何在实际项目中使用 MyBatis-Plus 实现分页查询。 我们需要在 Maven 项目的 `pom.xml` 文件中引入 MyBatis-Plus 和 MySQL 驱动的依赖: ```xml <dependencies> <!-- 引入mybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!-- 引入mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> </dependency> <!-- 引入Druid依赖,阿里巴巴所提供的数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency> </dependencies> ``` 接下来,我们需要配置数据源。这里使用了阿里巴巴的 Druid 数据源,配置在 `application.yml` 文件中: ```yaml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 ``` 在 Spring Boot 应用程序主类上,使用 `@MapperScan` 注解扫描 Mapper 包,这样 Spring 可以自动扫描并管理这些 Mapper: ```java @SpringBootApplication @MapperScan("com.qiao.demo02.mapper") public class SpringbootDemo02Application { public static void main(String[] args) { SpringApplication.run(SpringbootDemo02Application.class, args); } } ``` 创建实体类 `User`,并使用 `@Data`(来自 Lombok 库)注解自动生成 getter 和 setter 方法: ```java @Data public class User { @TableId private Integer userId; private String userName; private Integer userAge; private String userEmail; } ``` 接着,定义 `UserMapper` 接口,它继承自 `BaseMapper<User>`。`BaseMapper` 提供了基本的 CRUD 方法,包括分页查询所需的 `selectPage()` 方法: ```java public interface UserMapper extends BaseMapper<User> { } ``` 为了实现分页查询,MyBatis-Plus 提供了 `Page` 类,我们可以创建一个 `Page` 对象,指定当前页数和每页的大小: ```java Page<User> page = new Page<>(1, 10); ``` 然后在 Service 或 Controller 层调用 `UserMapper` 的 `selectPage()` 方法,传入 `Page` 对象和查询条件: ```java IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<User>()); ``` `QueryWrapper` 可以用于构建复杂的 SQL 条件,例如筛选年龄大于 18 的用户: ```java new QueryWrapper<User>().gt("user_age", 18) ``` `selectPage()` 方法返回的 `IPage` 类型包含了分页后的数据列表和分页信息,如总页数、总记录数等。我们可以遍历 `IPage` 对象获取分页后的用户列表: ```java for (User user : userPage.getRecords()) { System.out.println(user); } ``` 同时,`IPage` 还提供了其他方法,如 `getTotal()` 获取总记录数,`getSize()` 获取每页大小,`getCurrent()` 获取当前页数,可以用于展示分页导航。 总结起来,MyBatis-Plus 的分页查询主要涉及以下步骤: 1. 引入 MyBatis-Plus 和数据库驱动依赖。 2. 配置数据源(本例中使用 Druid)。 3. 创建实体类并标记字段。 4. 定义 Mapper 接口,继承 `BaseMapper`。 5. 使用 `Page` 对象和 `QueryWrapper` 构建分页查询。 6. 在 Service 或 Controller 层调用 `selectPage()` 方法执行分页查询。 7. 处理 `IPage` 返回的结果,包括分页数据和信息。 通过这种方式,MyBatis-Plus 能够帮助我们快速实现高效、灵活的分页查询,大大简化了开发工作。