分页的快捷方式

来源:互联网 发布:男士双肩背包推荐 知乎 编辑:程序博客网 时间:2024/06/16 12:00

1.1 分页插件

1.1.1 原理

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.1.2 使用方法

插件叫做PageHelper如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。

该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。

使用方法:

第一步:需要在SqlMapConfig.xml,配置一个plugin

第二步:在sql语句执行之前,添加一个PageHelper.startPage(page,rows);

第三步:取分页结果。创建一个PageInfo对象需要参数,查询结果返回的list。从PageInfo对象中取分页结果。

 

1.1.2.1 添加jar包到工程中

 

 

 

1.1.2.2 修改SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

 

<!-- 配置分页插件 -->

<plugins>

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

<!-- 指定使用的数据库是什么 -->

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

</plugin>

</plugins>

 

</configuration>

 

1.1.2.3 代码测试

public class TestPageHelper {

@Test

public void testPageHelper()throws Exception {

//1、获得mapper代理对象

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

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

//2、设置分页

PageHelper.startPage(1, 30);

//3、执行查询

TbItemExample example = new TbItemExample();

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

//4、取分页后结果

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

long total =pageInfo.getTotal();

System.out.println("total:" +total);

int pages =pageInfo.getPages();

System.out.println("pages:" +pages);

int pageSize =pageInfo.getPageSize();

System.out.println("pageSize:" +pageSize);

}

 

}

 

1.2 展示商品列表

1.2.1 页面分析

请求的url

 

Ajax请求。

 

请求的参数:http://localhost:8080/item/list?page=1&rows=30

 

响应的数据:json数据。

包含totalrows两个属性:

Total:查询结果的总记录数

Rows:集合,包含显示的所有数据。其中集合中每个元素的key应该和dategridfield对应。

Easyuidatagrid控件要求的数据格式为:

{total:2,rows:[{id:1,name,张三},{id:2,name,李四}]}

 

 

1.2.2 Dao

可以使用逆向工程生成的代码

 

1.2.3 Service

参数:page(显示的页码)、rows(每页显示的记录数)

返回值:创建一个pojo表示返回值。应该包含totalrows两个属性。

应该放到taotao-common工程中,和其他系统共用。

public class EasyUIDataGridResult {

 

private long total;

private List<?> rows;

public long getTotal() {

return total;

}

public void setTotal(long total) {

this.total =total;

}

public List<?> getRows() {

return rows;

}

public void setRows(List<?>rows) {

this.rows =rows;

}

}

 

@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;

}

 

1.2.4 Controller

接收两个参数:pagerows

调用Service查询商品列表。

返回:EasyUIDataGridResultjson数据),需要使用@ResponseBody

@RequestMapping("/item/list")

@ResponseBody

public EasyUIDataGridResult getItemList(Integerpage, Integerrows) {

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

return result;

}

 

原创粉丝点击