今天是刘小爱自学Java的第143天。

感谢你的观看,谢谢你。

学习计划安排如下:

  • 商品分类业务的初步实现。
  • 数据模型的分析:数据表字段的设计,Java中对应的实体类,前端页面vue组件。
  • 业务模型的分析:请求路径是什么?根据什么去数据库查询?具体实现代码的编写。
  • 其中还有一个跨域问题未来得及解决,怎么感觉积累的问题越来越多了,这样下去可不行啊。

一、商品分类业务

我们的项目是刘小爱商城,其核心自然是商品了,所以就要涉及到一个商品分类业务。

1需求分析

我们先看看国内的主流网站上是如何做的?

比如说家用电器,这是一级类目。

它又分为很多种:比如说电视、空调、洗衣机、冰箱……等,这是二级类目。

并且还能够垂直细分,比如说电视又可以被分为:超薄电视、全面屏电视……等。

好,如何用代码实现这种需求?

一个需求拿到手中了,优先建立数据模型

  • 前端页面中的这些数据如何存放到数据库中?
  • 数据库中的表如何设计,有哪些字段?
  • 设计Java实体类和数据表对应?

这些问题解决了,方向也就定了,剩下的就是具体代码的编写了。

所以说数据模型是非常重要的,你想呀,方向都弄错了,写再多的代码有什么用?

2数据库表关系梳理

商品分类这是一个多级类目的关系。

家用电器是一个父节点,它有多个子节点,子节点往下又有子节点,所以表字段设计:

  • id和name表字段这不用多说。
  • 通过表字段parent_id指定对应父节点的id?
  • 通过表字段is_parent确定它是否是父节点?
  • 如果是true表示它是父节点,有子节点。
  • 如果是false表示它不是父节点,没有子节点。

这样就能把表数据自关联起来了,无论多少级关系,都能表示清楚了。

值得注意的是

  • 数据表字段单词之间用下划线“_”隔开。
  • is_parent是一个布尔值,但是在数据表中用0和1表示,0为false,1为true。

3前端vue代码的编写

好数据分析完成,先从前端页面开始编写,因为请求是从前端页面发出的。

当然实际开发中应该都是根据开发文档来各自完成,我这边的话都得自己来弄。

Category.vue是分类业务对应的具体vue,v-card:卡片,是vuetify框架中提供的组件。

至于具体的前端代码编写,我们不做详细介绍,但是有一点我们要搞清楚:

页面发送的请求路径是怎样的?

后台服务器得根据这个路径来接受请求。

我们可以发现:请求路径为baseUrl+url,也就是上述中两个url相连接。

同时再通过浏览器F12打开控制台确认其请求路径是否是这样的?

二、后台代码编写

1Java实体类

注意实体类是存放在微服务lxa-item的lxa-item-pojo子工程中:

数据库中的表tb_category,关于字段和我们一开始的分析基本一致,多了一个sort属性。

而Category实体类使用通用mapper将其和表tb_category一一对应起来。

2启动类及mapper层

该业务逻辑很简单,只涉及到了单表查询,所以使用通用mapper即可。

注意具体的业务代码是存放在微服务lxa-item的lxa-item-service子工程中:

①mapper层代码编写

因为是单表查询,所以直接使用通用mappe即可,继承通用mapper中的Mapper接口即可,泛型为对应的实体类Category。

②启动类编写

因为使用了通用mapper,所以要通过注解@MapperScan确定扫描mapper的路径。

另外两个注解一个开启eureka客户端,一个说明是SpringBoot启动类,写过很多遍了。

注意:通用mapper相关的包为tk开头,一定要注意导包不要导错了。

3Controller层和Service层

①Controller层代码

确认其请求路径:category/list?pid=0

先不考虑网关,直接把整个业务写出来。

请求路径中参数是以问号的形式拼接到路径中的,所以用注解@RequestParam接受参数。

如果是category/list/1这样直接出现在请求路径中,就用注解@Pathvarible接受参数。

②Servic层代码

因为pid并不是tb_category表中的主键,所以创建一个对象设定pid再查询。

注意,做一个提醒

关于通用mapper的使用我专门写过一篇教程,就不做赘述了。

其中还应该做结果判断的处理,如果查询到的数据为空要报错,我这边暂时没做处理。

三、网关测试

代码编写完毕做一个测试:

①直接访问

直接在浏览器上输入对应的路径,参数pid设置为0,可以从数据库中查询到对应数据。

其查询的数据结果上图右侧有显示。

②通过网关访问

回顾:网关的作用相当于加了一层保护,其本质还是会跳转直接访问时的那个路径。

  • prefix:添加路由前缀,网关访问时路径都要加上设置的这个路由前缀。
  • routes:添加路由,item/及其子路径全部都会跳转到item-service这个微服务。

再次强调:每新建一个微服务,我们都要以相同的方式配置其网关路由。

③通过域名访问

如果通过我们昨天设定的网关域名访问,会发现浏览器控制台上报错了,

具体什么原因呢?

涉及到了一个跨域问题,关于该问题,时间受限,我们明天再做说明。

最后

我是刘小爱,一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

怎么创建数据表的实体类和业务类_微服务项目第13天:商品分类业务的实现相关推荐

  1. 怎么创建数据表的实体类和业务类_SSM搭建二手市场交易平台(二):数据表设计...

    写在前面 从本篇开始,我们正式开始项目的搭建,首先介绍数据表的设计,具体包括:表结构,表关系,唯一索引,单索引及组合索引,时间戳这几个内容. 数据表 首先我们创建一个数据库store,然后开始创建数据 ...

  2. 怎么创建数据表的实体类和业务类_怎样创建一个网站?

    怎样创建一个网站?创建网站有三个特别重要的元素,域名.服务器和程序,网站域名按照流程注册就可以了,网站服务器根据网站需要的空间选择,这两个只要你查查或者问提供商就可以慢慢操作的,其中最难的程序,里面需 ...

  3. 导入图片后截取_微服务项目第36天:导入数据到索引库

    今天是刘小爱自学Java的第166天. 感谢你的观看,谢谢你. 学习计划安排,导入需要的数据到索引库: 对于all字段的拼接. spu中附带的skus集合. sku中对应的price. specs规格 ...

  4. 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面

    原文:学习ASP.NET Core Razor 编程系列三--创建数据表及创建项目基本页面 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 ...

  5. 01-创建项目 创建数据表-类别管理--添加类别--持久层

    文章目录 1. 关于此项目 2. 关于项目的开发流程 3. 创建数据库与数据表 4. 关于Project与Module 5. 创建Project 6. 商品管理模块项目 7. 关于编写代码 8. 类别 ...

  6. 模拟hibernate的注解来创建数据表,内置注解

    目录 导读 注解释义 注解定义 内置三大注解 override注解 Deprecated注解 SuppressWarnings注解 元注解 SOURCE和RUNTIME的区别 SOURCE RUNTI ...

  7. 云客Drupal源码分析之数据库Schema及创建数据表

    本主题是<云客Drupal源码分析之数据库系统及其使用>的补充,便于查询,所以独立成一个主题 讲解数据库系统如何操作Schema(创建修改数据库.数据表.字段:判断它们的存在性等等),以及 ...

  8. crmeb从创建数据表到实现最基础增删改查的实现全过程【带附件】

    很多使用了 CRMEB 单商户系统的童鞋在进行二开的时候,都会遇到新建了数据表之后不知道对数据表怎么进行操作.那么,这篇文章将带你完整的实现一遍,以后就不会怕啦. 创建数据表 就以最简单的为例,创建一 ...

  9. mysql创建数据库和创建数据表DDL语言,简单易懂,秒学会

    介绍DDL: 数据定义语言(Data Definition Language,DDL),这是一种用于描述数据库所需存储的现实世界实体的专门语言, 其主要目的是用于定义和维护数据库以及数据表结构. 创建 ...

最新文章

  1. 多快好省的宏基因组研究技巧
  2. 当前不会命中断点.还没有为该文档加载任何符号解决
  3. mod_pagespeed
  4. .SpelEvaluationException: EL1008E: Property or field ‘cache_department_list_Tree‘ cannot be found
  5. 【转】Unity3D 关于贝赛尔曲线,平滑曲线,平滑路径,动态曲线
  6. Python入门--字典的创建
  7. 远程控制软件也要有plan B备选方案
  8. kubeedge源码分析
  9. HLK 微软驱动签名过程中踩过的坑
  10. hdoj 4288coder cf 85d Sum of Medians
  11. 搬:五大车载操作(VOS)系统优劣对比,车载系统架构分析
  12. 清除composite里的子控件
  13. 赚钱 36 计 - 第三十二计:预收计
  14. 31 | GPU(下):为什么深度学习需要使用 GPU?
  15. 弘辽科技:拼多多店铺可以改名字吗?店铺名字怎么取?
  16. iOS微信授权登录中Universal Link(通用链接)的配置 ,解决ios13,ios14微信支付不走回调问题
  17. 应用程序无法正常启动, 错误代码0xc0000007b
  18. windows开机自动进bios 常见的问题
  19. 局部渐近稳定,全局渐进稳定,一致有界,一致最终有界
  20. [日本留学]高频面试问题清单

热门文章

  1. sha256校验工具_使用AIDE工具做入侵检测
  2. C++局部变量和全局变量的初始化
  3. 一篇文章搞懂数据仓库:三范式与反范式
  4. Java并发编程实战~不安全的单例
  5. @requestparam @param @pathvariable @requestbody的区别
  6. c# 从地址拷贝byte_面试必备的 “零拷贝” 问题!从头给你说!
  7. oracle 会话 临时表,Oracle 学习系列之二(会话与事务级临时表)
  8. 风机桨叶故障诊断(六) 利用自编码器进行特征学习
  9. [数据库]-----记一次mysql分库的操作(冷热分离)
  10. Linux的实际操作:用户管理(查看用户和组的配置文件/etc/passwd /etc/group /etc/shadow)