一般使用插件实现分页功能,但是在使用插件之前我们首先手动写出分页代码,对比插件实现的分页,利于我们理解分页底层实现和更好的实现插件分页实用技术,本次使用的插件是PageHelper(采用都是物理分页)
下载: https://github.com/pagehelper/Mybatis-PageHelper
下载这两个包 !
pegeHelper插件分页只是几个部分
第一:需要的mybatis.xml的配置文件中配置插件;并将下载的包添加的工程中哦!
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
第二:在servlect中使用PageHelper的startPage方法
Page<Object> page=PageHelper.startPage(第几页, 每页显示的个数);
第三:PageHelper拦截器会拦截查询方法,并且在查询的sql中根据不同的数据库拼接分页语句实现分页
第四:将PageInfo这个类存放分页的各种属性信息,核心代码就这三行,num的值由页面传递过来
//获得分页对象
Page<Object> page=PageHelper.startPage(Integer.valueOf(num), 10);
//获得所有数据
List<Userinfo> list=userservice.selectPageInfo();
//获得PageInfo对象
PageInfo<Userinfo> pageInfo =page.toPageInfo();
UserinfoMapper.xml文件
<select id="selectPageInfo" resultType="Userinfo">
select * from userinfo
<!-- 可以根据条件查询--->
<trim prefix="where" prefixOverrides="and|or">
<if test="userCode!=null">
userCode like concat('%',#{userCode},'%')
</if>
<if test="gender!=0">
and gender=#{gender}
</if>
<if test="userPassword!=null">
or userPassword=#{userPassword}
</if>
</trim>
</select>
测试:
@Test
public void all2() {
//
SqlSession session = null;
try {
//连接会话
session = MybatisUtil.getSession();
//
System.out.println(session);
//
//获得接口
UserinfoMapper mapper = session.getMapper(UserinfoMapper.class);
Page page= PageHelper.startPage(1, 6);
// Userinfo u =new Userinfo();
//调用方法
List<Userinfo> list = mapper.selectByExample(null);
// System.out.println(list.size());
for (Userinfo cls : list) {
System.out.println(cls);
}
//封装PageInfo对象
// PageInfo<Userinfo> pageInfo = new PageInfo<>(list);
PageInfo<Userinfo> pageInfo =page.toPageInfo();
System.out.println("总页数:"+pageInfo.getPages() + "==>总个数:" + pageInfo.getTotal());
System.out.println("当前页:"+pageInfo.getPageNum() + "==>每页显示的个数:" + pageInfo.getPageSize());
System.out.println("前一页:"+pageInfo.getPrePage() + "==>下一页:" + pageInfo.getNextPage());
System.out.println("第一页:"+pageInfo.getNavigateFirstPage() + "==>最后一页:" + pageInfo.getNavigateLastPage());
System.out.println("当前页的列表"+pageInfo.getList().size());
} catch (Exception ex) {
ex.printStackTrace();
} finally {
//关闭
MybatisUtil.closeSession(session);
}
}
}
效果: