淘淘商城系列(四)后台商品列表展示

本文介绍如何在SSM框架下实现商品列表的分页展示功能,包括使用PageHelper分页插件进行配置和代码实现,以及EasyUI DataGrid响应式数据结构的设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章来自于我的ssm博客:http://iclyj.cn/blog/articles/93.html


1.1 代码实现

@Controller

public class PageController {

 

     @RequestMapping("/")

     public String showIndex() {

          return "index";

     }

}

 

1.2 静态资源映射

2.1 分析

打开商品列表页面,应该创建一个Handler接收请求,跳转到对应的页面。请求和页面的名称一致。可以统一处理。

查询的表:tb_item

单表查询sql:SELECT * from tb_item LIMIT 0,10

需要实现分页,使用逆向工程,可以使用mybatis的分页插件。

 

2.2 分页插件

2.2.1 原理

 

1499787020751045303.jpg

2.2.2 使用方法

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

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

使用方法:

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

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

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

 

2.2.2.1 添加jar包到工程中

1499787077361041578.jpg

2.2.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>

 

2.2.2.3 代码测试

public class TestPageHelper {

      

     @Test

     public void testPageHelper() throws Exception {

          //1、获得mapper代理对象

          ApplicationContext  applicationContext = newClassPathXmlApplicationContext("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);

           

     }

 

}

 

2.3 展示商品列表

2.3.1 页面分析

请求的url:

Ajax请求。

 

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

 

响应的数据:json数据。

包含total、rows两个属性:

Total:查询结果的总记录数

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

Easyui中datagrid控件要求的数据格式为:

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

 

2.3.2 Dao层

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

 

2.3.3 Service层

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

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

应该放到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 pageint rows) {

          //分页处理

          PageHelper.startPage(pagerows);

          //执行查询

          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;

     }

 

2.3.4 Controller

接收两个参数:page、rows

调用Service查询商品列表。

返回:EasyUIDataGridResult(json数据),需要使用@ResponseBody

@RequestMapping("/item/list")

     @ResponseBody

     public EasyUIDataGridResult getItemList(Integer page, Integer rows) {

          EasyUIDataGridResult result = itemService.getItemList(pagerows);

          return result;

     }

 

1499787140048030635.jpg


1499787175626077818.jpg


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值