用PageHelper和mybatais写一个分业查询
时间: 2024-05-03 19:21:51 浏览: 62
1. 首先,在pom.xml中添加PageHelper和MyBatis的依赖:
```xml
<!-- PageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
```
2. 在application.properties中添加MyBatis的配置:
```properties
# MyBatis配置
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:mapper/*.xml
```
3. 创建一个分页查询的Mapper接口:
```java
@Mapper
public interface UserMapper {
/**
* 分页查询用户列表
* @param pageNum 当前页码
* @param pageSize 每页显示的记录数
* @return 用户列表
*/
List<User> listUsers(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
}
```
4. 在resources/mapper目录下创建一个UserMapper.xml文件,编写SQL语句,并使用PageHelper的插件进行分页:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<!-- 分页查询用户列表 -->
<select id="listUsers" resultType="User">
SELECT * FROM user
<trim prefix="WHERE" prefixOverrides="AND">
<if test="name != null">
AND name like CONCAT('%',#{name},'%')
</if>
</trim>
ORDER BY id ASC
</select>
</mapper>
```
5. 在Controller中调用Mapper接口实现分页查询:
```java
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
/**
* 分页查询用户列表
* @param pageNum 当前页码
* @param pageSize 每页显示的记录数
* @param name 模糊查询的名称
* @return 用户列表
*/
@GetMapping("/users")
public PageInfo<User> listUsers(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize,
String name) {
PageHelper.startPage(pageNum, pageSize);
List<User> users = userMapper.listUsers(pageNum, pageSize);
return new PageInfo<>(users);
}
}
```
6. 请求接口进行分页查询:
```
GET http://localhost:8080/users?pageNum=1&pageSize=10&name=Tom
```
其中,pageNum为当前页码,pageSize为每页显示的记录数,name为模糊查询的名称。返回结果为一个JSON对象,包含了当前页码、每页显示的记录数、总记录数、总页数以及当前页的记录列表。
阅读全文