提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
分页:插件pageHelper
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、 使用
1.导入依赖
<!--PageHelper分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.0</version>
</dependency>
2.在application.yml文件配置信息
pagehelper:
# 自动获取方言
auto-dialect: true
# 合理化分页
reasonable: true
3.测试(pageHelper的基本使用)
// 1、EmployeeMapper(添加一个findByPage方法)
public interface EmployeeMapper {
List<Employee> findByPage(String name);
}
// 2、EmployeeMapper.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.mapper.EmployeeMapper">
<select id="findByPage" resultType="com.itheima.reggie.entity.Employee">
select * from employee
<where>
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
</where>
</select>
</mapper>
// 3、测试类
@SpringBootTest
public class PageHelperTest {
@Autowired
EmployeeMapper mapper;
@Test
public void test0() {
int pageNum = 1;
int pageSize = 2;
String name = "to";
//1.设置分页参数
PageHelper.startPage(pageNum,pageSize);
//2.调用mapper的查询操作(紧跟着上面设置分页参数的第一条查询语句会被自动分页)
List<Employee> list = mapper.findByPage(name);
//3.用pageInfo封装查询结果list 就可以获取所有的分页属性
PageInfo<Employee> pageInfo = new PageInfo<>(list);
System.out.println("总页数:"+pageInfo.getPages());
System.out.println("当前页数据集合:"+pageInfo.getList());
System.out.println("总记录数:"+pageInfo.getTotal());
System.out.println("当前页:"+pageInfo.getPageNum());
System.out.println("每页记录数:"+pageInfo.getPageSize());
}
}
二、分页查询实现
1.引入库
3.4 分页查询实现
举例:具体的请求信息如下:
请求 | 说明 |
---|---|
请求方式 | GET |
请求路径 | /employee/page |
请求参数 | page , pageSize , name |
响应 | |
---|---|
{“code”:1,“data”:page对象} |
那么查询完毕后我们需要给前端返回什么样的结果呢?
查询返回的结果数据data中应该封装两项信息, 分别为: records 封装分页列表数据, total 中封装符合条件的总记录数。 那我们则需要自定义一个Page类必须包含records 与total两个属性的
Page实体类的编写
最好放在common包下.
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Page<T> {
private List<T> records;
private long total;
}
EmployeeController控制器
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
/**
* 作用: 员工列表分页
* @param page 当前页
* @param pageSize 页面大小
* @param name 用户名
* @return
*/
@GetMapping("/page")
public R<Page<Employee>> page(Integer page,Integer pageSize,String name){
Page<Employee> pageResult= employeeService.findByPage(page,pageSize,name);
return R.success(pageResult);
}
}
EmployeeService接口
;
public interface EmployeeService {
/**
* 作用: 员工列表分页
* @param page 当前页
* @param pageSize 页面大小
* @param name 用户名
* @return
*/
Page<Employee> findByPage(Integer page, Integer pageSize, String name);
}
EmployeeServiceImpl接口实现类
@Service
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
/**
* 作用: 员工列表分页
* @param page 当前页
* @param pageSize 页面大小
* @param name 用户名
* @return
*/
@Override
public Page<Employee> findByPage(Integer page, Integer pageSize, String name) {
//1. 设置当前页与页面大小
PageHelper.startPage(page,pageSize);
//2. 查询数据
List<Employee> employeeList = employeeMapper.findByName(name);
//3. 创建PageINfo对象,把list集合传入
PageInfo<Employee> pageInfo = new PageInfo(employeeList);
//4. 把pageinfo的信息转移到Page对象
Page<Employee> pageResult = new Page<>(pageInfo.getList(),pageInfo.getTotal());
return pageResult;
}
}