Bootstrap

在 MyBatis 中,分页通常是通过 Page 类来实现的。Page 类是 MyBatis-Plus 或其他分页插件提供的一个类,用于帮助实现分页查询。

1. MyBatis-Plus 分页查询

首先,确保你已经引入了 MyBatis-Plus 相关依赖。

Maven 依赖:
 

xml

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-core</artifactId> <version>3.x.x</version> <!-- 使用你对应的版本 --> </dependency>

2. 基本分页查询

在 Mapper 层中:
 

java

import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; public interface UserMapper extends BaseMapper<User> { // 分页查询 List<User> selectUserPage(Page<User> page, String username, String name); }

在 Service 层中:
 

java

复制编辑

import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class UserService extends ServiceImpl<UserMapper, User> { public Page<User> getUserPage(int pageNo, int pageSize, String username, String name) { // 创建分页对象 Page<User> page = new Page<>(pageNo, pageSize); // 调用 Mapper 层的分页查询方法 return this.baseMapper.selectUserPage(page, username, name); } }

在 Controller 层中:
 

java

@RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public Page<User> getUserList(@RequestParam int pageNo, @RequestParam int pageSize, @RequestParam String username, @RequestParam String name) { return userService.getUserPage(pageNo, pageSize, username, name); } }

3. 分页插件配置

MyBatis-Plus 需要在配置类中开启分页插件。可以通过如下方式进行配置:

 

java

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); return factoryBean.getObject(); } }

4. 查询返回的分页结果

Page 类不仅返回了数据列表,还会提供分页的相关信息,比如总记录数、总页数等。你可以通过这些信息来实现分页效果。

例如:

 

java

Page<User> userPage = userService.getUserPage(pageNo, pageSize, username, name); List<User> records = userPage.getRecords(); // 查询结果 long total = userPage.getTotal(); // 总记录数 long pages = userPage.getPages(); // 总页数

5. 前端分页展示

在前端展示分页数据时,可以利用 Page 类返回的 totalpages 来实现分页控件的显示。比如在 Vue 中,你可以根据这些信息来实现分页控件和数据展示。


总结:

  • MyBatis-Plus 提供了一个 Page 类来方便地进行分页操作。
  • 在 Mapper 中通过 Page 参数来执行分页查询,MyBatis-Plus 会自动帮你处理分页逻辑。
  • 不需要手动计算分页信息,MyBatis-Plus 会在查询结果中自动返回分页信息。
;