重点: pagehelper 1.4.2不支持强制转换; 解决方法:直接将mapper中的类型改成Page。sevice层中则直接用page类型接收数据,不用list。 pagehelper 1.4.6不持强制转换; 如果mapper类型为list,则在sevice中需要将list强制转换为page
springboot版本在3以上,pagehelper版本要在1.4.6以上!
package com.itheima.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
@Service
public class EmpServiceImpl implements EmpService{
@Autowired
private EmpMapper empMapper;
@Override
/*这个注解的作用是告诉编译器,你打算重写父类中的方法,建议在覆盖方法时使用它,因为它可以提高代码的可读性和可维护性。
@Override注解可以帮助你避免由于方法签名不匹配而引起的错误*/
public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
/**
//1.获取总记录数
Long count = empMapper.count();
//2.获取结果列表
Integer start = (page-1) * pageSize; //获取开始索引
List<Emp> empList = empMapper.page(start, pageSize);
**/
//1.设置分页参数
PageHelper.startPage(page,pageSize);
//2.执行查询 重点:不用强制转换,直接将mapper中的类型改成Page。如果类型为list,则需要强制转换,且pagehelper类型要是1.4.6
Page<Emp> p = empMapper.list(name, gender, begin, end);
//Page<Emp> p = (Page<Emp>) empList;
/* 3.封装pagebean对象 */
PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
return pageBean;
}
}
package com.itheima.mapper;
import com.github.pagehelper.Page;
import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import java.time.LocalDate;
@Mapper
public interface EmpMapper {
/*查询总记录数
@Select("select count(*) from emp")
public Long count();
分页查询,获取查询数据
@Select("select * from emp limit #{strat},#{pageSize}")
public List<Emp> page(Integer strat,Integer pageSize);
*/
//员工信息查询
//@Select("select * from emp")
public Page<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
}