导入依赖
file:pom.xml
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
mapper
在 Mapper.xml 写 Sql 语句时一定要注意不能给语句末尾处添加 ;
,否则 PageHelper 拼接的 sql 就是错误的。
file:resources/mappers/BaseMapper.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.mappers.BaseMapper">
<select id="queryAll">
SELECT * FROM temhu
ORDER BY id DESC
</select>
</mapper>
file:src/mappers/BaseMapper.java
@Mapper
public interface BaseMapper {
List<Temphu> queryAll(Map<String, Object> map);
}
pojos
file:src/pojos/TemphuPage.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TemphuPage {
private int pageSize;
private long total;
private List<Temphu> list;
}
service
file:src/services/BaseService.java
@Service
public class BaseService {
private final BaseMapper mapper;
public BaseService(BaseMapper mapper) {
this.mapper = mapper;
}
public TemphuPage queryAll(Map<String, Object> map) {
Page<?> page = PageHelper.startPage((Integer) map.get("pageNum"), (Integer) map.get("pageSize"));
List<Temphu> temphus = mapper.queryAll(map);
return new TemphuPage(page.getPageSize(), page.getTotal(), temphus);
}
}
在 java 中 <?>
代表一个未知的类型,和 Object 不同的是,这个未知类型不可以被操作,至少 Object 有一些基本的函数可以操作。<?>
提供了更灵活和类型安全的方式处理未知类型,而 Object 是一个具体的类。
- 调用 PageHelper.startPage 函数,传递一页数量和页码数。
- 调用 mapper 查询内容。
- 通过 page 对象,获取页码数量、总数,将这些数据和查询到的内容一同封装给 TemphuPage 实体类对象并返回出去。
controller
file:src/controllers/BaseController.java
@CrossOrigin
@RestController
@RequestMapping("/api")
public class BaseController {
private final BaseService service;
public BaseController(BaseService service) {
this.service = service;
}
/**
* pageNum:页码
* pageSize:一页数量
*/
@PostMapping("/temphu/query/all")
public TemphuPage queryAll(@RequestBody Map<String, Object> map) {
return service.queryAll(map);
}
}