Mybatis分页处理-分页插件pageHelper

****生成的代码是不支持分页处理的,如果想进行分页需要自己编写mapper,这样就失去****的意义了。为了提高开发效率可以使用mybatis的分页插件PageHelper。

1、Mybatis分页插件 - PageHelper说明

如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。https://download.csdn.net/download/qq_18142501/10588992(下载链接)

2、使用方法

第一步:把PageHelper依赖的jar包添加到工程中。官方提供的代码对****支持的不好,使用参考资料中的pagehelper-fix。

第二步:在Mybatis配置xml中配置拦截器插件:

<plugins>

    <!-- com.github.pagehelperPageHelper类所在包名 -->

    <plugin interceptor="com.github.pagehelper.PageHelper">

        <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->       

        <property name="dialect" value="mysql"/>

    </plugin>

</plugins>

第二步:在代码中使用

1、设置分页信息:

    //获取第1页,10条内容,默认查询总数count

    PageHelper.startPage(1, 10);

 

    //紧跟着的第一个select方法会被分页

List<Country> list = countryMapper.selectIf(1);

2、取分页信息

//分页后,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>

Page<Country> listCountry = (Page<Country>)list;

listCountry.getTotal();

  1. 取分页信息的第二种方法

//获取第1页,10条内容,默认查询总数count

PageHelper.startPage(1, 10);

List<Country> list = countryMapper.selectAll();

//PageInfo对结果进行包装

PageInfo page = new PageInfo(list);

//测试PageInfo全部属性

//PageInfo包含了非常全面的分页属性

assertEquals(1, page.getPageNum());

assertEquals(10, page.getPageSize());

assertEquals(1, page.getStartRow());

assertEquals(10, page.getEndRow());

assertEquals(183, page.getTotal());

assertEquals(19, page.getPages());

assertEquals(1, page.getFirstPage());

assertEquals(8, page.getLastPage());

assertEquals(true, page.isFirstPage());

assertEquals(false, page.isLastPage());

assertEquals(false, page.isHasPreviousPage());

assertEquals(true, page.isHasNextPage());

 

  1. 分页测试

@Test

     public void testPageHelper() throws Exception {

          //初始化spring容器

          ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");

          //获得Mapper的代理对象

          TbItemMapper itemMapper = applicationContext.getBean(TbItemMapper.class);

          //设置分页信息

          PageHelper.startPage(1, 30);

          //执行查询

          TbItemExample example = new TbItemExample();

          List<TbItem> list = itemMapper.selectByExample(example);

          //取分页信息

          PageInfo<TbItem> pageInfo = new PageInfo<>(list);

          System.out.println(pageInfo.getTotal());

          System.out.println(pageInfo.getPages());

          System.out.println(pageInfo.getPageNum());

          System.out.println(pageInfo.getPageSize());

     }

Service层

参数:int page ,int rows

业务逻辑:查询所有商品列表,要进行分页处理。

返回值:EasyUIDataGridResult

@Override

     public EasyUIDataGridResult getItemList(int page, int rows) {

         

          //设置分页信息

          PageHelper.startPage(page, rows);

          //执行查询

          TbItemExample example = new TbItemExample();

          List<TbItem> list = itemMapper.selectByExample(example);

          //取分页信息

          PageInfo<TbItem> pageInfo = new PageInfo<>(list);

         

          //创建返回结果对象

          EasyUIDataGridResult result = new EasyUIDataGridResult();

          result.setTotal(pageInfo.getTotal());

          result.setRows(list);

         

          return result;

     }

发布服务

Mybatis分页处理-分页插件pageHelper

表现层

引用服务:

Mybatis分页处理-分页插件pageHelper

1、初始化表格请求的url:/item/list

2、Datagrid默认请求参数:

  1. page:当前的页码,从1开始。
  2. rows:每页显示的记录数。
  1. 响应的数据:json数据。EasyUIDataGridResult

@RequestMapping("/item/list")

     @ResponseBody

     public EasyUIDataGridResult getItemList(Integer page, Integer rows) {

          EasyUIDataGridResult result = itemService.getItemList(page, rows);

          return result;

     }

 

 

 

 

 

可以设置服务超时时间:

服务调用超时时间默认1秒,