【MyBatis系列】基础篇——ResultMap自定义映射
一、简介
- PageHelper是MyBatis中的一个第三方分页插件
- 对照官方文档的说明,快速的使用插件
二、使用步骤
1) 导入jar包
pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar
和 两个日志jar包
2) 在MyBatis全局配置文件中配置分页插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3) 编写代码:Page对象实现分页
(1)Page对象实现分页
- 在查询之前通过PageHelper.startPage(页码,条数)设置分页信息,该方法返回Page对象
@Test
public void testPage() throws Exception{
String resource = "mybatis-config.xml";
//获取src下面配置文件输入流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSession工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂创建SQLSession对象,参数值true表示事务自动提交
SqlSession session = sqlSessionFactory.openSession(true);
try {
//Mapper接口:获取Mapper接口的 代理实现类对象
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
//1:创建page对象
//startPage方法传递2个参数:第一个是当前页,第二个是每页显示记录数
Page<Object> page = PageHelper.startPage(1,3);
//2:调用方法查询表中所有记录
List<Employee> list = mapper.selectByExample(null);
for (Employee emp:list){
System.out.println(emp);
}
//3:实现分页查询之后,pageHelper把分页信息封装page对象里面
int pageNum = page.getPageNum(); //当前页
int pages = page.getPages();//总页数
int pageSize = page.getPageSize(); //每页显示记录数
long total = page.getTotal(); //总记录数
System.out.println(pageNum);
System.out.println(pages);
System.out.println(pageSize);
System.out.println(total);
} finally {
session.close();
}
}
结果:
(2)PageInfo对象实现分页
- 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑
@Test
public void testPageInfo() throws Exception{
//配置文件信息
String resource = "mybatis-config.xml";
//获取src下面配置文件输入流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSession工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂创建sqlSession对象,参数值true表示事务自动提交
SqlSession session = sqlSessionFactory.openSession(true);
try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
//1 2 创建page对象,查询所有记录
Page<Object> page = PageHelper.startPage(3, 3);
List<Employee> list = mapper.selectByExample(null);
//3 把分页查询之后所有信息封装到pageInfo对象里面
//PageInfo(List<T> list, int navigatePages)
// 第一个参数分页数据list集合
//第二个参数 页码数显示多少个
PageInfo<Employee> info = new PageInfo<>(list,2);
System.out.println("当前页: " + info.getPageNum());
System.out.println("总页码: " + info.getPages());
System.out.println("总条数: " + info.getTotal());
System.out.println("每页显示的条数: " + info.getPageSize());
System.out.println("是否是第一页: " + info.isIsFirstPage());
System.out.println("是否是最后一页: " + info.isIsLastPage());
System.out.println("是否有上一页: " + info.isHasPreviousPage());
System.out.println("是否有下一页: " + info.isHasNextPage());
System.out.println("============分页逻辑===============");
int[] nums = info.getNavigatepageNums(); //所有页面数
for(int num:nums) {
System.out.println(num);
}
} finally {
session.close();
}
}
结果:
感谢阅读哇~