mybatis的PageHelper简单使用

本文介绍如何在Maven项目中使用MyBatis的PageHelper插件实现数据库查询分页功能。通过在pom.xml中引入依赖、配置mybatis全局配置文件、定义pojo、dao、service类及mapper文件,展示PageHelper的简单应用。

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

mybatis的PageHelper简单使用

使用maven开发

步骤:

  1. 在pom.xml中引入依赖
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper</artifactId>
	<version>5.1.2</version>
</dependency>
  1. 在mybatis全局配置文件中配置PageHelper插件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 引入 pageHelper插件 -->
	<!--注意这里要写成PageInterceptor, 5.0之前的版本都是写PageHelper, 5.0之后要换成PageInterceptor-->
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor">
			<!--reasonable:分页合理化参数,默认值为false,直接根据参数进行查询。
			  当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。-->
			<!--<property name="reasonable" value="true"/>-->
		</plugin>
	</plugins>
</configuration>
  1. 定义pojo、dao、service类和mapper文件
public class User {
	private String username;
	private String passwd;
	
	//get set方法
}
@Repository
public class UserDao {
	public List<User> query(User user);
}

注意:SQL里面不需要写limit,pagehelper会帮我们做好

<select id="query" parameterType="com.User" resultType="com.User">
	select username, passwd
	from user
	<where>
		<if test="username != null and username != '' ">
			username = #{username}
		</if>
	</where>
</select>
@Service
public class UserService {
	@Autowired
	private UserDao userDao;
	
	public List<User> query(User user, int pageNum, int pageSize) {
		PageHelper.startPage(pageNum, pageSize); //这句要在查询代码之前,pageNum从1开始
		List<User> userList = userDao.query(user);
		PageInfo<User> pageInfo = new PageInfo<User>(userList);
		
		/*
		pageInfo.list:就是userList
		pageInfo.pageNum:当前页码
		pageInfo.pages:页数
		pageInfo.total:总记录数
		*/
	}
}

pageInfo的属性

	//当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;
    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"

    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;

    //第一页
    private int firstPage;
    //前一页
    private int prePage;
    //下一页
    private int nextPage;
    //最后一页
    private int lastPage;

    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值