1、导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
2、配置拦截器插件(可以不写)
Spring Boot 引入 starter 后自动生效,对分页插件进行配置时,在 Spring Boot 对应的配置文件 application.[properties|yaml] 中配置:
pagehelper:
propertyName: propertyValue
reasonable: false
defaultCount: true # 分页插件默认参数支持 default-count 形式,自定义扩展的参数,必须大小写一致
3、编写代码
3.1 设计DTO类
@Data
public class UserPageQueryDTO implements Serializable {
//用户姓名
private String name;
//页码
private int page;
//每页显示的记录数
private int pageSize;
}
3.2 封装PageResult类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult implements Serializable {
private long total; //总记录数
private List records; //当前页数据集合
}
3.3 设计统一结果返回类Result(略)
3.4 Controller
@RestController
@RequestMapping("/user")
@Api(tags = "员工管理")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/page")
@ApiOperation("用户分页查询")
public Result<PageResult> page(UserPageQueryDTO userPageQueryDTO) {
PageResult pageResult = userService.page(userPageQueryDTO);
return Result.success(pageResult);
}
}
3.5 Service
public interface UserService {
PageResult page(UserPageQueryDTO userPageQueryDTO);
}
// 实现类
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public PageResult page(UserPageQueryDTO userPageQueryDTO) {
PageHelper.startPage(userPageQueryDTO.getPage(), userPageQueryDTO.getPageSize());
Page<User> page = userMapper.pageQuery(userPageQueryDTO);
long total = page.getTotal();
List<User> employeeList = page.getResult();
return new PageResult(total, employeeList);
}
}
3.6 Mapper
@Mapper
public interface UserMapper {
Page<User> pageQuery(UserPageQueryDTO userPageQueryDTO);
}
// UserMapper.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.itheima.mapper.UserMapper">
<!-- 员工分页查询-->
<select id="pageQuery" resultType="com.itheima.pojo.entity.User">
select * from user
<where>
<if test="name != null and name != ''">
name like concat('%', #{name}, '%')
</if>
</where>
order by created_time desc
</select>
</mapper>
4、编写XML文件扫描配置
mybatis:
mapper-locations: classpath*:mapper/**/*.xml