方法1:整合pageHelper分页插件
优点:快捷,只需要你有一个查询全部数据的方法即可
缺点:对于初学者来说,不了解内部的原理
前提:需要先实现一个最简单的 查询全部数据的方法,不会的可以先去搭建一个项目
SpringBoot 整合mybatis、mybatis日志、并测试findAll查询数据库方法:
https://blog.csdn.net/KangYouWei6/article/details/127021894
1.添加依赖
添加到pom.xml中的dependencies标签中
刷新maven
<!--pageHelper分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
2.配置 => properties / yml
注意yml的语法,开头那个必须顶格
pagehelper:
helperDialect: mysql
reasonable: true # 修改默认值
3.写方法
在UserService里面
//分页查询
List<User> findPage(Integer pageNo,Integer pageSize);
在UserServiceImpl里面
//分页查询
@Override
public List<User> findPage(Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo,pageSize);
return userMapper.list();//这里的list方法是查询全部数据的方法
}
在UserController里面
//分页查询
@RequestMapping("findPage")
public List<User> findPage(int pageNo,Integer pageSize){
return userService.findPage(pageNo,pageSize);
}
4.测试
在数据库中多添加几条数据
在启动类(HelloApplication)里面启动
在网页或者PostMan上输入
localhost:8081/user/findPage?pageNo=1&pageSize=2
方法2:自己写
优点:对于初学者来说,可以了解分页查询内部的原理
缺点:比较麻烦
为什么用map
因为前面的findAll是查询出一些数据,直接用List<user> 这种接收就可以了
但是 分页查询,需要得到的结果是下图这种json数据
需要有 一个total 一个data,只用List是不行的
mapper层
List<User> selectPage(Integer pageNum, Integer pageSize);//分页查询
Integer countAll ();//统计
service层
List<User> selectPage(Integer pageNum, Integer pageSize);//分页查询
Integer countAll ();//统计
impl层
//分页查询
@Override
public List<User> selectPage(Integer pageNum, Integer pageSize) {
pageNum = (pageNum - 1) * pageSize;
return userMapper.selectPage(pageNum,pageSize);
}
//统计
@Override
public Integer countAll() {
return userMapper.countAll();
}
controller层
/**
* 分页查询
* @param pageNum
* @param pageSize
* @return
*/
@GetMapping("/page")
public Map<String , Object> findPage(@RequestParam int pageNum, @RequestParam int pageSize){
//分页查询的数据放到 data 里面
List<User> data =userService.selectPage(pageNum,pageSize);
//统计的数据放到 total 里面
Integer total = userService.countAll();
Map<String,Object> res = new HashMap<>();
res.put("data",data);
res.put("total",total);
return res;
}
xml层
注意修改 resultType里面的user路径
<!--分页查询-->
<select id="selectPage" parameterType="Integer" resultType="com.mk.mkspringboot.entity.User">
select * from sys_user limit #{pageNum}, #{pageSize}
</select>
<!--统计-->
<select id="countAll" resultType="Integer">
select count(*) from sys_user
</select>
url
http://localhost:8081/user/page?pageSize=5&pageNum=1