# TMallDemo **Repository Path**: springff/TMallDemo ## Basic Information - **Project Name**: TMallDemo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-25 - **Last Updated**: 2021-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《天猫商城项目》学习笔记 > **参考:**[模仿天猫实战【SSM】——总结](https://www.cnblogs.com/wmyskxz/p/9005147.html) ## 学习思路: 需求整理,表的设计,功能模块划分,生成数据库,创建工程,业务逻辑,页面 ## 实现步骤: - 页面划分,功能描述 - 思维导图模块的划分,实现逻辑(简要) - 数据库、表的设计,创建 - 工程的创建 - MyBatis 逆向工程 - 实现模块按照功能划分:商品展示、商品详情、交易流程 来,然后是先后台在前台,先 model,controller 在view ## 需求分析: ### 前台页面: 首页、登录注册、产品搜索页、产品展示页 首页: - 搜索栏下的热门搜索 - 分类导航栏 - 商品分类 - 轮播图 - 展示分类下的产品 产品搜索: - 搜索窗口(公共) - 筛选功能 - 产品展示列表 商品详情页: - 产品信息展示 - 评价列表 提交订单 支付页面 支付成功页面 我的订单页面:所有订单、待付款、待发货、待收货、待评价(列表切换) - 根据订单的不同状态,可以跳转不同的操作页面 - 未付款-付款页面;未评价-评价页面 确认收货页面 - 购物流程记录 - 商品信息展示 - 订单信息展示 - 确认收货 确认收货成功页面 评价页面 ### 后台页面: ## 表设计: ### 步骤: - 在理清功能模块的基础上,确定数据表组成(UML) - 按照核心功能模块往外扩展,添加表的字段,有依赖字段就先完成依赖字段的设计(采用文本的方式设计) - 表结构设计完之后,梳理表之间的关系(UML) ### 表字段: 产品类别表:主键id、类别名称 产品属性表:主键id、属性名称、类别id 超链接表:主键id、超链接显示文字、超链接跳转地址 产品表:主键id,产品名称、小标题、价格、销量、库存、对应分类id (销量和存款感觉不应该放到产品表) 产品属性值表:主键id、产品id、属性id、属性值、(感觉这个表有点怪) 图片表:主键id、产品id(为什么不用字段去保存图片的地址,而是将图片命名转换为对应的id) 用户表:主键id、用户名、密码 订单表:主键id、订单号(唯一)、收货地址、邮编、收货人姓名、手机号码、订单创建时间、订单支付时间、发货日期、确认收货日期、订单状态(1-待支付、2-待发货、3-待收货、4-待评价、5-已评价)、用户id、 订单详情表:主键id、订单id、产品id、产品数量、 (订单id + 产品id作为联合主键比较好) 评价表:主键id、评价内容、产品id、用户id、评价时间、(感觉关联订单id会比较好) ### 总结: - 直接在UML上添加字段就很方便,PowerDesigner感觉又太笨重 - 感觉把数据表列出来,后台管理对应的需求也清晰了,就是管理表的数据 - 数据表的建立是手写sql,还是通过可视化工具进行呢?感觉手写数据好慢,10张简单的表写了1个小时,用可视化工具,顶多30分钟 - 数据表设计的时候外键字段怎么可以为null呢 - 手写sql没有工具提示很容易出错,在创建外键约束时 把外键表 “category” 写成了 “cotegory ” 找了30分钟的错误,并且还有其他的错误。 - 数据库可视化管理工具:HeidiSQL ## 工程的创建 > 创建 SpringMVC Mybatis 项目 应该有创建工程的梳理的文章,可以参考 ## MyBatis 逆向生成 配置文件 + 配置生成类 ### 问题: generator 配置文件读取失败,肯定是部分属性配置错误,直接复制博客中的配置就不会报错。 **"Result Maps collection already contains value for" mapper.xml 映射文件解析错误** 调用了2次 mybatis 自动生成,mapper.xml好像没有替换,而是进行了追加,导致出现了重复的 sql id 的映射语句 [Result Maps collection already contains value for](https://blog.csdn.net/erpenggg/article/details/90440378) **@ContextConfiguration 使用** 使用 @ContextConfiguration 去加载 spring 配置文件,会自动监测注入的Bean是否在扫描的包下或者Bean是否被注册,添加的类如果没有满足条件,使用@AutoWired的时候会报错。 **bootstrap 图片对应名称** ## 后台开发 el 表达式 、jstl 需要加强、react 学习 ### 用户管理 ### 分类管理 分类列表,分类编辑 ### 问题: [mysql实现自增id AUTO_INCREMENT从设置](https://blog.csdn.net/huyanzhiwei/article/details/56488586) @RequestMapping url中文解析乱码(自动封装到对象中) resourc目录下的 generatorConfig 被自动执行了,Mapper.java 文件被覆盖(test下的代码被执行) 项目jetty发布问题,报错 maven 配置默认编译版本 **tomcat 下的 servlet 包和 javaee 包冲突问题,使用jetty作为web容器就不会出现jar冲突问题,jetty自身不带有servlet包** ![image-20210327113558449](readme.assets/image-20210327113558449.png) 为什么报了这个冲突,工程还是正常的运行,之前不就是因为包加载冲突导致,web项目无法发布 **加上javaee依赖之后,案例Tmall能够在tomcat成功发布,自己TMallDemo为什么就不能发布成功为什么?** 对比一下发布的日志文件 ![image-20210327120741375](readme.assets/image-20210327120741375.png) 居然是和导入的依赖有关系 ## 问题记录: [maven3设置jdk版本设置编译目标版本](https://blog.csdn.net/w851685279/article/details/88743447) 上传文件应该放在工程的外部指定的目录(或者 oss 中)而不是工程之中,上传文件的地址应该使用配置的方式,方便开发和生产环境的切换 ## 总结收获 - ajax 请求、文件上传、项目开发思路、mybatisGenerator