pagehelper使用 代码示例
时间: 2024-05-16 17:11:12 浏览: 55
PageHelper是一个基于MyBatis的分页插件,它可以自动进行分页查询并将结果封装成Page对象,方便我们进行分页操作。下面是使用PageHelper进行分页查询的代码示例:
```java
//设置分页参数
PageHelper.startPage(pageNum, pageSize);
//进行分页查询
List<User> userList = userDao.getUserList();
//将查询结果封装成Page对象
PageInfo<User> pageInfo = new PageInfo<>(userList);
//获取分页信息
long total = pageInfo.getTotal(); //总记录数
int pages = pageInfo.getPages(); //总页数
int currentPage = pageInfo.getPageNum(); //当前页码
int pageSize = pageInfo.getPageSize(); //每页记录数
```
以上代码中,pageNum代表查询的页码,pageSize代表每页显示的记录数,getUserList()方法是自己定义的查询方法,返回值是一个List集合,其中包含了当前页的记录。通过调用PageHelper.startPage()方法来设置分页参数,然后进行查询并将结果封装成Page对象,最后通过PageInfo对象获取分页信息。
相关问题
mybatis测试pagehelper的代码
以下是使用 MyBatis 和 PageHelper 插件进行分页查询的示例代码:
首先,在 pom.xml 文件中添加以下依赖:
```xml
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- PageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
```
然后,在 MyBatis 的配置文件(比如 `mybatis-config.xml`)中配置 PageHelper 插件:
```xml
<configuration>
<!-- 其他配置 -->
<plugins>
<!-- PageHelper 插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
```
接下来,我们假设有一个 `UserMapper` 接口和对应的实现类 `UserMapperImpl`,其中定义了一个分页查询用户信息的方法 `listUsersByPage`:
```java
public interface UserMapper {
List<User> listUsersByPage(int pageNum, int pageSize);
}
public class UserMapperImpl implements UserMapper {
private final SqlSessionFactory sqlSessionFactory;
public UserMapperImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public List<User> listUsersByPage(int pageNum, int pageSize) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
PageHelper.startPage(pageNum, pageSize);
return mapper.listUsers();
}
}
}
```
其中,`PageHelper.startPage(pageNum, pageSize)` 会自动拦截下一次查询,并在查询语句中添加 LIMIT 子句,实现分页查询。
最后,我们可以编写一个测试类 `UserMapperTest` 来验证分页查询的效果:
```java
public class UserMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void setup() {
// 初始化 SqlSessionFactory
String resource = "mybatis-config.xml";
try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
throw new RuntimeException(e);
}
// 初始化数据库
try (SqlSession sqlSession = sqlSessionFactory.openSession();
Statement statement = sqlSession.getConnection().createStatement()) {
statement.executeUpdate("DROP TABLE IF EXISTS users");
statement.executeUpdate("CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(20), age INT)");
statement.executeUpdate("INSERT INTO users VALUES (1, 'Alice', 20), (2, 'Bob', 21), (3, 'Charlie', 22)");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Test
public void testListUsersByPage() {
UserMapper userMapper = new UserMapperImpl(sqlSessionFactory);
List<User> users1 = userMapper.listUsersByPage(1, 2);
List<User> users2 = userMapper.listUsersByPage(2, 2);
assertEquals(2, users1.size());
assertEquals(1, users2.size());
assertEquals("Alice", users1.get(0).getName());
assertEquals("Bob", users1.get(1).getName());
assertEquals("Charlie", users2.get(0).getName());
}
}
```
在测试中,我们先使用 `setup` 方法初始化数据库,然后调用 `listUsersByPage` 方法进行分页查询,并检查查询结果是否符合预期。
PageHelper使用
PageHelper是一个用于分页查询的Java插件,可以方便地对数据库查询结果进行分页处理。
使用PageHelper可以简化分页操作的代码,它提供了一些方法来处理分页查询,例如设置当前页码、每页显示的记录数、总记录数等。
以下是使用PageHelper的步骤:
1. 添加依赖:在项目的pom.xml文件中添加PageHelper的依赖项。例如:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
```
2. 配置PageHelper:在项目的配置文件中(如application.properties或application.yml)配置PageHelper的属性。例如:
```properties
# MySQL数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=123456
# PageHelper配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
```
3. 使用PageHelper:在需要进行分页查询的方法中,通过调用PageHelper.startPage方法来开启分页功能,并设置相关参数。例如:
```java
public List<User> getUsers(int pageNum, int pageSize) {
// 开始分页
PageHelper.startPage(pageNum, pageSize);
// 执行查询操作,获取分页结果
List<User> userList = userMapper.getUsers();
// 返回分页结果
return userList;
}
```
在以上示例中,startPage方法将会对后续的查询进行分页处理,pageNum参数指定当前页码,pageSize参数指定每页显示的记录数。最后,返回的是经过分页处理的结果。
注意:需要结合具体的ORM框架(如MyBatis)来使用PageHelper,并且需要正确配置数据库相关信息和PageHelper的属性。具体的使用方式可以参考PageHelper的官方文档或示例代码。
阅读全文