4、商品列表查询

商品列表查询

项目源码

jspitem-list.jsp ,是一个jsp片段,所以点击时,始终是一个页面。
点击时,响应的是一个HTML片段。
下面这个片段是一个easyui-datagrid表格,样式是在index.jsp里面引入的。
因为始终都是在index.jsp这个页面。
在这里插入图片描述

点击查询商品,请求为url/item/list 就是item-list.jsp里面的
因为它是index的一个片段。
在这里插入图片描述

在这里插入图片描述

  • 请求的参数为: page=1&rows=30datagrid默认加的

响应的json数据格式:

  • EasyUIdatagrid控件要求的数据格式为:
    一个total(一共查询了多少条记录),一个rows(当前页展示的结果集)
    {total:”2”,rows:[{“id”:”1”,”name”:”张三”},{“id”:”2”,”name”:”李四”}]}

rows里面的数据和表格的对应:
在这里插入图片描述

由上面的表格知道要返回的数据为:
在这里插入图片描述

数据库中商品表里面上述字段都有,故是单表查询,可以用逆向工程。
但是逆向工程的代码不能分页。
PageHelper分页插件。

使用分页插件PageHelper

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

Mybatis分页插件 - PageHelper说明

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

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>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>

</configuration>

使用方法

第一步:把PageHelper依赖的jar包添加到工程中。

响应的json数据格式EasyUIDataGridResult

放到e3-common里面,因为serviceweb都会用到。放cn.ylx.common.pojo包下
在这里插入图片描述

package cn.ylx;

import java.io.Serializable;
import java.util.List;

public class EasyUIDataGridResult implements Serializable {

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

Service

参数:int page ,int rows
业务逻辑:查询所有商品列表,要进行分页处理。
返回值:EasyUIDataGridResult

package cn.ylx.service;

import cn.ylx.EasyUIDataGridResult;
import cn.ylx.pojo.TbItem;

public interface TbItemService {

    TbItem getItemById(Long itemId);
    EasyUIDataGridResult getItemList(int page, int rows);

}
package cn.ylx.service.impl;

import cn.ylx.EasyUIDataGridResult;
import cn.ylx.mapper.TbItemMapper;
import cn.ylx.pojo.TbItem;
import cn.ylx.service.TbItemService;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@Service
public class TbItemServiceImpl implements TbItemService {

    @Autowired
    private TbItemMapper tbItemMapper;

    @Override
    public TbItem getItemById(Long itemId) {
        return tbItemMapper.selectByPrimaryKey(itemId);
    }

    @Override
    public EasyUIDataGridResult getItemList(int page, int rows) {
        //设置分页信息,紧跟着的第一个select方法会被分页
        PageHelper.startPage(page, rows);
        //执行查询
        List<TbItem> list = tbItemMapper.getItemList();
        //取分页信息
        PageInfo<TbItem> pageInfo = new PageInfo<>(list);

        //创建返回结果对象
        EasyUIDataGridResult result = new EasyUIDataGridResult();
        result.setTotal(pageInfo.getTotal());
        result.setRows(list);

        return result;

    }
}

表现层,TbItemController添加方法

  • 初始化表格请求的url/item/list
    Datagrid默认请求参数:
  • page:当前的页码,从1开始。
  • rows:每页显示的记录数。
  • 响应的数据:json数据。EasyUIDataGridResult
    @RequestMapping("/list")
    @ResponseBody
    public EasyUIDataGridResult getItemList(Integer page, Integer rows) {
        EasyUIDataGridResult result = tbItemService.getItemList(page, rows);
        return result;
    }

测试

  • 先启动服务层,再启动表现层
  • 浏览器输入:http://localhost:8081/ ,点击查询商品
    上一页,下一页,修改下一秒显示熟练,刷新等都可以用了。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42112635/article/details/84798529
今日推荐