若依框架startPage()不起作用,查询的total是pageSize,total总数不合适的问题
startPage()方法是MyBatis的一个分页插件,它会自动拦截后续的数据库查询语句,根据指定的页码和每页大小进行分页查询。当结果返回的是实体类的集合时,startPage()可以正常起作用,因为它可以对实体类的集合进行拦截并进行分页处理。
然而,如果结果不是实体类的集合,而是其他类型的数据(如数组、Map等),startPage()无法对这些非实体类的数据进行拦截和分页处理。这就是为什么在你提供的代码中,使用了 startPage(),但是分页功能并未生效的原因。
如果你希望对非实体类的数据进行分页,你可以使用 PageHelper插件的另一种分页方式,即使用 PageInfo类进行手动分页。下面是修改后的代码示例
@GetMapping("/findBydept")
public R findPhoneByDept(@RequestParam String dept, @RequestParam int pageNum, @RequestParam int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<PhoneVO1> phoneVO1s = phoneServiceImpl.selectByDeptAndSmsType(dept);
PageInfo<PhoneVO1> pageInfo = new PageInfo<>(phoneVO1s);
// 返回结果
HashMap<String, Object> map = new HashMap<>();
map.put("rows", phoneVO1s);
map.put("code", HttpStatus.SUCCESS);
map.put("msg", "查询成功");
map.put("total", pageInfo.getTotal());
return R.ok(map);
}