mybtis框架使用pagehelper插件进行分页

1.1.1 分页处理

1.1.1.1 分页插件pagehelper

          如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。

1.1.1.2 使用Pagehelper

Ø  第一步:在taotao_manager_dao项目中的pom.xml中添加依赖:如果有加则不需要再加了。

<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
  dependency>

 

 

Ø  第二步:在mybatis的全局配置文件中,添加拦截器配置,如下:

<plugins>
    
    <plugin interceptor="com.github.pagehelper.PageHelper">
        
        <property name="dialect" value="mysql"/>
    plugin>
  plugins>

 

 

第三步:在代码中使用pagehelper 分页查询:

1、设置分页信息:

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

    PageHelper.startPage(1, 10);

 

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

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

 

 

2、取分页信息第一种方法

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

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

listCountry.getTotal();

3、取分页信息的第二种方法,推荐使用第二种

//获取第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.1.1.3 测试PageHelper

@Test
  public void testPageHelper() {
    //初始化spring容器
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml");
    TbItemMapper itemMapper = context.getBean(TbItemMapper.class);
    //设置分页的条件
    PageHelper.startPage(1, 3);
    //紧跟着的第一个查询才会被分页
    //
    TbItemExample example = new TbItemExample();
    List list = itemMapper.selectByExample(example);
    List list2 = itemMapper.selectByExample(example);
    System.out.println("打印出来的总书是list1:》》》" + list.size());
    System.out.println("打印出来的总书是list2:》》》" + list2.size());
  
    //封装分页信息
    PageInfo info = new PageInfo(list);
    System.out.println("总记录数:"+info.getTotal());
    System.out.println("查询的列表行数:"+info.getList().size());
}

 

1.1.2 服务层系统开发

1.1.2.1 dao的开发

DAO的开发可以使用逆向工程,不需要再重新开发。

1.1.2.2 service的开发

Ø  编写接口

public interface ItemService {
    /**
     *
     * @param page 当前的页码
     * @param rows 每页显示的行数
     * @return
     */
    public EasyUIDataGridResult getItemList(Integer page,Integer rows);
}

 

 

Ø  编写实现类

@Service
  public class ItemServiceImpl implements ItemService {
  
    @Autowired
    private TbItemMapper mapper;
    @Override
    public EasyUIDataGridResult getItemList(Integer page, Integer rows) {
        //设置分页的条件
        PageHelper.startPage(page,rows);
  
        //创建example
        TbItemExample example =new TbItemExample();
        //执行查询 获取查询的结果
        List tbItemList = mapper.selectByExample(example);
  
        //封装分页信息
        PageInfo info = new PageInfo(tbItemList);
        //设置分页信息到easyuidataGridResult中
        EasyUIDataGridResult result = new EasyUIDataGridResult();
        result.setTotal(info.getTotal());
        result.setRows(info.getList());
        return result;
    }
}

 

 

1.1.2.3 发布服务

在taotao_manager_service工程中的applicationContext-service.xml中设置如下。

 

1.1.3 表现层系统开发

1.1.3.1 编写Controller

/**
 * 分页查询商品列表
 * @param page
 * @param rows
 * @return
 */
  @RequestMapping("/item/list")
  @ResponseBody
  public EasyUIDataGridResult getItemList(Integer page, Integer rows) {
    EasyUIDataGridResult result = itemService.getItemList(page, rows);
    return result;
}

 

 

1.1.3.2 引入服务

在taotao_manager_web工程中的springmvc.xml中引入服务,如下图:

 

 

1.1.4 测试

 

出现异常:异常信息如下:

 

需要debug:开启debug模式,

 

debug过程中发现有错误日志如下:

 

 

说明:超时,dubbo有默认的超时时间,如果不设置默认为1秒,可以设置,如图:在taotao_manager_service工程中的applicationContext-service.xml中配置如下:

 

同理:在taotao_manager_web中的springmvc.xml中配置timeout选项。

你可能感兴趣的:(SSM框架,mybatis,分页插件)