目录
1.2 配置mybatis-config.xml核心配置文件
一、相关配置
1.1 引入相关依赖
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
1.2 配置mybatis-config.xml核心配置文件
该分页插件配置的原理简单介绍:
配置该插件后,会注册一个拦截器。会拦截所有select的sql语句,然后拼接上limit语句,完成分页需求。
<plugins>
<!--配置分页插件-->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
二、简单使用分页插件
2.1 编写控制层
渲染页面时使用,向共享域共享page。通过page.list调用分页的数据进行页面渲染
@Controller
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
/**
* 分页查询员工信息
*
* @param model 用于向共享域共享数据
* @param pageNum 当前页码
* @return {@link String}
*/
@GetMapping("/employee/page/{pageNum}")
public String getEmployeeByPagePlunge(@PathVariable("pageNum") Integer pageNum,
Model model) {
PageInfo<Emp> page = employeeService.getEmployeePage(pageNum);
model.addAttribute("page", page);
return "employee_list";
}
}
2.2 编写service层
public interface EmployeeService {
/**
* 获取分页数据
*
* @param pageNum 当前页的页码
* @return {@link PageInfo}<{@link Emp}>
*/
PageInfo<Emp> getEmployeePage(Integer pageNum);
}
@Service
@Transactional
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmpMapper empMapper;
/**
* 分页查询员工信息
*
* @param pageNum 当前页的页码
* @return {@link PageInfo}<{@link Emp}>
*/
@Override
public PageInfo<Emp> getEmployeePage(Integer pageNum) {
//开启分页功能 设置每页展示5条数据
PageHelper.startPage(pageNum, 4);
//设置5个导航分页
return new PageInfo<>(empMapper.selectByExample(null), 5);
}
}
2.3 编写mapper层
public interface EmpMapper {
List<Emp> selectByExample(EmpExample example);
}
<?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.pageHelper.mapper.EmpMapper" >
<resultMap id="BaseResultMap" type="com.atguigu.pojo.Emp" >
<id column="emp_id" property="empId" jdbcType="INTEGER" />
<result column="emp_name" property="empName" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="sex" property="sex" jdbcType="CHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
</resultMap>
<select id="selectByExample" resultMap="BaseResultMap" >
select * from t_emp
</select>
</mapper>
三、扩展(介绍分页的相关数据)
pageInfo对象的其他数据:
- pageNum:当前页的页码
- pageSize:每页显示的条数
- size:当前页显示的真实条数
- total:总记录数
- pages:总页数
- prePage:上一页的页码
- nextPage:下一页的页码
- isFirstPage/isLastPage:是否为第一页/最后一页
- hasPreviousPage/hasNextPage:是否存在上一页/下一页
- navigatePages:导航分页的页码数
- navigatepageNums:导航分页的页码,[1,2,3,4,5]
通过控制层返回的PageInfo对象调用即可
eg: PageInfo<Emp> page = employeeService.getEmployeePage(pageNum);
...
//对于Java层面
page.getList();
page.getPageNum();