MyBatis之PageHelper分页插件

本文介绍如何在SpringBoot项目中使用PageHelper插件实现数据分页查询。通过在pom文件中引入依赖,配置application.properties文件,并在UserService中定义分页方法,最终在单元测试中验证分页功能的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在上一篇整合SpringBoot的基础之上,再进行PageHelper分页插件的实验。

首先我们先在数据库内准备一些用于测试的数据

pom文件引入pagehelper-spring-boot-starter

<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.2.10</version>
</dependency>

配置文件application.properties对PageHelper插件进行配置

#配置PageHelper
# 数据库方言
pagehelper.helper-dialect=mysql
# 判断合理性比如负数和超过最大总数
pagehelper.reasonable=true
# 支持方法参数
pagehelper.support-methods-arguments=true

配置完毕,我们可以使用PageHelper了,在UserService中定义一个需要进行分页的方法

public Map<String, Object> listUser(User user, int pageNum, int pageSize) {
	Map<String, Object> result = new HashMap<String, Object>();
        //只对该语句后的第一个查询语句得到的数据进行分页
	Page<?> page=PageHelper.startPage(pageNum, pageSize);
	List<User> list = userMapper.listUser(user);
	result.put("data", list);
	result.put("pages", page.getTotal());
	return result;
}

如上所示,我们在需要进行分页的持久层方法userMapper.listUser(user)上面,添加一行代码分页的代码

Page<?> page=PageHelper.startPage(pageNum, pageSize);

UserMapper.xml不需要进行特殊的处理,只需编写正常的查询SQL

<select id="listUser" resultType="User">
	select
	<include refid="Base_Column_List" />
	from user
	<where>
		<if test="id != null and id!=''">
			and id = #{id}
		</if>
		<if test="name != null and name!=''">
			and name like concat('%',#{name},'%')
		</if>
		<if test="age != null and age!=''">
			and age=#{age}
		</if>
	</where>
	order by id
</select>

准备完毕,我们可以进行单元测试了

@Test
public void listUser() {
	User user =new User();	
	user.setName("test");
	Map<String, Object> result=userService.listUser(user,1,5);
	List<User> list =(List<User>) result.get("data");
	for(User u:list){
		log.info("u:"+u);
	}
	log.info("pages:"+result.get("pages"));	
}

查看结果

2018-12-06 09:20:19.768 DEBUG 2484 --- [           main] com.yj.dao.UserMapper.listUser_COUNT     : ==>  Preparing: SELECT count(0) FROM user WHERE name LIKE concat('%', ?, '%') 
2018-12-06 09:20:19.913 DEBUG 2484 --- [           main] com.yj.dao.UserMapper.listUser_COUNT     : ==> Parameters: test(String)
2018-12-06 09:20:19.930 DEBUG 2484 --- [           main] com.yj.dao.UserMapper.listUser_COUNT     : <==      Total: 1
2018-12-06 09:20:19.933 DEBUG 2484 --- [           main] com.yj.dao.UserMapper.listUser           : ==>  Preparing: select id, name,age from user WHERE name like concat('%',?,'%') order by id LIMIT ? 
2018-12-06 09:20:19.937 DEBUG 2484 --- [           main] com.yj.dao.UserMapper.listUser           : ==> Parameters: test(String), 5(Integer)
2018-12-06 09:20:19.940 DEBUG 2484 --- [           main] com.yj.dao.UserMapper.listUser           : <==      Total: 5
2018-12-06 09:20:19.942  INFO 2484 --- [           main] com.yj.service.UserServiceTest           : u:User [id=1, name=test1, age=18]
2018-12-06 09:20:19.943  INFO 2484 --- [           main] com.yj.service.UserServiceTest           : u:User [id=2, name=test2, age=18]
2018-12-06 09:20:19.944  INFO 2484 --- [           main] com.yj.service.UserServiceTest           : u:User [id=3, name=test3, age=18]
2018-12-06 09:20:19.944  INFO 2484 --- [           main] com.yj.service.UserServiceTest           : u:User [id=4, name=test4, age=18]
2018-12-06 09:20:19.944  INFO 2484 --- [           main] com.yj.service.UserServiceTest           : u:User [id=5, name=test5, age=18]
2018-12-06 09:20:19.944  INFO 2484 --- [           main] com.yj.service.UserServiceTest           : pages:14

这样,我们就利用PageHelper分页插件,实现了数据的查询和数据总数的查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎户星座。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值