第一种实现方式(PageHelper):
PageHelper是一个用于对MyBatis进行分页的开源插件,它可以非常方便地为MyBatis提供分页功能。以下是PageHelper的用法:
1.添加依赖 在Maven项目中,可以通过以下方式来添加PageHelper的依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
2.配置插件 在MyBatis的配置文件中,可以通过以下方式来配置PageHelper插件:
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
其中,dialect属性用来指定数据库类型。
3.在代码中使用 在需要分页的方法中,可以使用PageHelper来实现分页功能,具体步骤如下:
(1)在调用方法前调用PageHelper.startPage方法,设置分页相关参数,如当前页码、每页记录数等信息:
#注意这段代码一定要放在sql语句正上方,否则会失效
PageHelper.startPage(1, 10);
(2)调用方法获取分页数据:
List<User> userList = userDao.selectAll();
(3)调用PageInfo对象的相关方法获取分页信息,如当前页码、总记录数等:
PageInfo<User> pageInfo = new PageInfo<User>(userList);
System.out.println("当前页码:" + pageInfo.getPageNum());
System.out.println("每页记录数:" + pageInfo.getPageSize());
System.out.println("总记录数:" + pageInfo.getTotal());
以上就是PageHelper的用法,通过简单的配置和调用,就可以实现MyBatis的分页功能。
第二种实现方式(使用Mabatis-Plus)
MyBatis-Plus是一个基于MyBatis的增强工具,提供了快速便捷的增删改查、分页、主键生成、条件构造器等功能,今天我们来详细介绍如何使用MyBatis-Plus实现分页。
1.添加依赖 在Maven项目中,需要在pom.xml文件中添加MyBatis-Plus和MyBatis的依赖,具体如下:
<!-- MyBatis-Plus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
其中,{mybatis.plus.version}是变量,需要在项目中进行定义。
2.配置分页插件 在Spring Boot项目中,可以通过以下方式进行分页插件的配置:
@Configuration
public class MybatisPlusConfig {
/**
* 配置分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
3.实体类继承BaseEntity 在MyBatis-Plus中实现分页,需要在实体类中继承BaseEntity类,如下所示:
@Data
public class User extends BaseEntity {
private Long id;
private String name;
private Integer age;
private String email;
}
4.在Mapper中使用分页查询 在Mapper层中,可以使用MyBatis-Plus提供的Page对象来实现分页查询,具体步骤如下:
(1)定义方法,通过@Param注解来传递分页参数:
List<User> selectPageList(@Param("page") Page<User> page);
(2)在方法体中,使用selectPage方法进行分页查询,并返回结果:
@Override
public List<User> selectPageList(Page<User> page) {
return baseMapper.selectPage(page, null);
}
(3)在Service层中使用分页查询
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public IPage<User> selectPage(Page<User> page) {
return baseMapper.selectPage(page, null);
}
}
(4)在Controller层中获取分页信息以及数据列表
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public Page<User> pageList(@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
Page<User> page = new Page<>(pageNo, pageSize);
IPage<User> iPage = userService.selectPage(page);
return iPage;
}
}
以上就是使用MyBatis-Plus实现分页的详细步骤和代码示例。 mybatis-plus官网
上述两种方式都比较推荐