MyCat - 商品管理 - 根据条件分页查询 SPU 列表 | 学习笔记

简介: 快速学习 MyCat - 商品管理 - 根据条件分页查询 SPU 列表

开发者学堂课程【全面讲解开源数据库中间件 MyCat 使用及原理(四):MyCat - 商品管理 - 根据条件分页查询 SPU 列表 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/758/detail/13315


MyCat - 商品管理 - 根据条件分页查询 SPU 列表

内容介绍:

一、前言

二、演示

 

一、前言

本节继续讲解商品模块需求中的第二个需求:根据条件查询商品 SPu 列表。

先来看有哪些条件,下图为项目原型图。

image.png

根据条件查询商品首先是商品名称去模糊查询,然后根据副标题查询,然后是品牌、审核状态。

其中商品查询和副标题是模糊查询,而品牌和审核状态属于精确查询。

 

二、演示

步骤1、定义 Mapper 接口

在代码 SPUMapper.java 中:

/**

*

*根据 ID 查询 SPU 信息

*@param spuid

*@return

*/

public TbSpu findById(String spuid);

然后在第二方面生成一个代码

由于查询返回的是一个列表,在输入 public 后,再生成 List<TbSpu> 和方法serach(),

传递条件采用 Map <String,String> searchMap

即输入

public List<TbSpu> serach(Map <String,String> searchMap);

以上条件查询方法已经完成,可以添加注释条件查询:

/**

*条件查询

*@param searchMap

*@return

*/

声明好条件查询方法之后,在 SpuMapper.xml 中需要编写对应的映射配置文件写入 sql 语句,方法名与 ID 对应

<select id="search" resultMap="spuMap">

</select>

然后再来编写对应的 sql 语句,该 sql 语句需要查询 spu 信息,所以在<select id="search" resultMap="spuMap">下输入select*from tb_spu

但是查询需要条件,在项目原型图中,输入条件,点击查询就可以进行查询 select的 SPU 的商品信息,如果只选了一个条件,根据该条件过滤,两个条件根据两个条件过滤,假如没有选择条件,那就是全部查询。

若是需要全部实现,则需要用到动态 sql 完成查询。

如下:

<where>

<if test="name != null and name != ‘’">

and name like '%$ {name}% '

</if>

<if test="caption != null and caption != ‘’">

and caption like ' %${caption}% '

</if>

<if test="brandId != null">

and brand_id = # { brandId}

</if>

<if test="status !=nul1 and status != "'">

and status =#{status}

</if>

</ where>

分别以 spu 的名称、副标题、品牌 ID、状态来进行查询。

步骤2、建立 Service 接口

在这层需要编写一个接口 public  page(返回值:是由 pagehelper 所提供,因为需要分页,所以我们能使用到 pagehelper 分页插件来进行分页)方法名依旧是Map。

public Page search(Map<string,String>searchMap)

除了 Map 传递的条件外,还需要传递别的信息,即输入

public Page search(Map<string,String>searchMap,Integer page,Integer size);

并在上方注释“根据条件进行查询 spu 列表”

/**

*根据条件分页查询spu列表

*@param searchMap

*@param page

**/

步骤3、编制 SpuServicelmpl

设置分页查询的参数

//设置分页查询参数

PageHelper.startPage(page,size);

之后再调用 spuMapper 中的 search 方法

List<TbSpu> spulist=spuMapper.search(searchMap);

将 searchMap 传递过去后返回的是一个 list,list 实际类型是一个 page,所以输入return (Page)spuList;

步骤4、编制 SpuController

首先编制一个方法 public Result findPage(Map<String, String searchMap)

其中,searchMap 是当中的查询条件

之后,在此基础上在编制 Integer 类型的 page 和 Integer 类型的 size 如下:

public Result findPage(Map<String,String> searchMap,Integer page,Integer size)

传递参数之前需要在此基础的上方再编制 PostMapping 并赋予 value 值“/search/{page}/{size}-]”

并在此基础上再加上注解,

@Pathvariable("page")Integer page,@Pathvariable(”size”)Integer size){

这样分页参数即可传递

SearchMap 传递:由于使用的是 cost 请求,实际上就想让{Map<String,String>searchMap参数转化成另一种格式,则在代码 Map 前添加注解 RequestBody,

public Result findPage(RequestBody Map<String,String>searchMap,

并调用 spuservice 中的方法 search 并传递 searchMap,page,size 之后会传递一个结果 pageResult

Page pageResult=spuservice. search(searchMap, page, size);

之后开始解析 page 内容:

1、通过 pageResult 调用方法 getTotal 可以拿到总记录数

(long total=pageResult. getTotal();)

2、再调用 pageResult 中的方法 getResult 即可拿到结果

既然是分页查询,就需要把结果封装到分页对象当中,如图所示:(找到分页对象)

依次是v_parent v_common src main java

cn.itcastentity pageResult

pageResult文档当中有两个参数第一个total(总记录数),第二个rows(结果列表)

private Long total;//总记录数

private List<T> rows//记录数

并在下方封装对象 new pageResult,利用此对象时,其中可以传递两项参数,第一项就是总记录数 total,第二项就是结果列表 Result, 之后就会返回一个pageResult,接下来直接返回上一个结果,输入代码 return new Reault(flag:true,Statuacode.ok,message:“查询成功",pageResult1)即可完成。

相关文章
|
11月前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
442 16
|
监控 物联网 数据安全/隐私保护
智能家居包含了众多设备,在通过智能化技术提升居家生活的便利性、安全性、节能性和舒适度
智能家居系统包含了众多设备,旨在通过智能化技术提升居家生活的便利性、安全性、节能性和舒适度。以下是一些智能家居系统中常见的设备类别及其基本操作简述:
|
编解码 数据可视化 定位技术
从零到一建设数据中台 - 数据可视化
从零到一建设数据中台 - 数据可视化
349 2
|
监控 负载均衡 网络协议
OSPF在大型网络中的应用:高效路由与可扩展性
OSPF在大型网络中的应用:高效路由与可扩展性
824 1
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
320 0
|
存储 小程序 数据库
阿里云学生服务器申请流程_学生党免费领7个月学生机
阿里云2024年推出学生优惠,大陆在籍学生可免费申领7个月学生服务器,配置为2核2G,无限流量,含独立IP。学生需注册账号、完成实名及学生认证,首月免费,完成任务可续费6个月。此外,还有300元无门槛优惠券可在阿里云高校计划中领取,适用于多种云产品。申请及优惠详情见官方链接。
8139 4
阿里云学生服务器申请流程_学生党免费领7个月学生机
|
存储 Ubuntu 关系型数据库
在Ubuntu 16.04上安装和配置ownCloud的方法
在Ubuntu 16.04上安装和配置ownCloud的方法
202 0
|
Java Windows
用Java手搓一个转义工具
本文介绍了转义符的概念及其在编程中的作用,如`\n`、`\t`等,用于表示特殊字符。在Java中,通过`Scanner`接收用户输入,利用`escapeString`方法转义字符串中的特殊字符。示例代码展示了如何实现这一功能,读取用户输入,转义后打印结果。
329 2
|
编解码 测试技术 Android开发
Appium Inspector与Weditor:移动端测试的利器
本文介绍了两款移动端自动化测试的元素定位工具:Appium Inspector和weditor。Appium Inspector是官方推荐的辅助工具,而weditor是基于Python的ATX生态工具,支持Android和iOS界面分析。weditor安装需Python 3.6以上版本,可能遇到的GBK编码问题可通过更改系统区域设置解决。它提供设备界面、元素详情和代码运行三个主要部分,便于元素定位、属性查看及交互代码执行。这两款工具对于提升开发和测试效率具有积极作用。
easyui-textbox 和 easyui-validatebox 设置值和获取值
easyui-textbox 和 easyui-validatebox 设置值和获取值
473 1