原文链接:https://www.cnblogs.com/dengpengbo/p/10579631.html
基本使用方法
1.maven依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
2.mybatis配置
<?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>
<settings>
<!-- 控制台打印sql语句 -->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<!--5.0版本以下的配置是:com.github.pagehelper.PageHelper-->
<!--<plugin interceptor="com.github.pagehelper.PageHelper">-->
<!--5.0版本以上的配置是:com.github.pagehelper.PageInterceptor-->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--不需要配置方言-->
<!--<property name="dialect" value="mysql"/>-->
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样 -->
<property name="offsetAsPageNum" value="true"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型) -->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="false"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="******"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.test.dao"/>
</mappers>
</configuration>
3.测试
/**
* 查询接口
*/
public interface UserMapper {
@Select("select * from t_user")
Page<User> list();
}
// 获取配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 通过加载配置文件获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取SqlSession对象
SqlSession session = factory.openSession();
PageHelper.startPage(2, 2, "id desc").countColumn("*").setOrderByOnly(false);
UserMapper mapper = session.getMapper(UserMapper.class);
Page<User> list = mapper.list();
System.out.println(list.getPageNum());
System.out.println(list.getPageSize());
System.out.println(list.getPages());
for (User user : list.getResult()) {
System.out.println(user);
}
System.out.println("==============================================================================");
//通过params传参分页
Map<String, Object> params = new HashMap<>();
params.put("start", 1);
params.put("limit", 3);
params.put("orderBy", "name desc");
PageHelper.startPage(params);
list = mapper.list();
for (User user : list.getResult()) {
System.out.println(user);
}