# ssm **Repository Path**: coderchencs/ssm ## Basic Information - **Project Name**: ssm - **Description**: ssm仿天猫商城 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-06-24 - **Last Updated**: 2024-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## spring+springmvc+mybatis的天猫商城 #### 介绍 * 跟着教程打的。教程在how2j上。 * 前端是jsp和bootstrap ## 说明 #### 数据库表的设计 * 九张表之间的关系 ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210507203834.png) ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210507204059.png) ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210507204153.png) * order是关键字,所以用order_命名订单表。 * **用户表**对应前端登录页面 * **分类表**对应首页的竖状导航条 * **属性表**在产品页的商品详情标签下,显示本产品对应分类所设置的所有属性。 * **产品表**产品页的产品信息里显示本产品的名称,小标题,原始价格,促销价,销量,库存等信息 * **属性表**在产品页的商品详情标签下,显示本产品的所有属性值 * **产品图片表**在产品页显示5个单个图片 * **评价表**产品页显示评价信息 * **订单表**在后台的订单管理页面看到的订单信息 * **订单项表**在购物车中看到的订单项信息 #### 功能描述 #### 后台 **分类管理**:对商品分类的crud和设置图片 **产品管理**:对单项产品的crud及设置图片和属性 **属性管理**:对产品属性的crud **用户管理**: **订单管理**:查看订单详情,发货和与前台功能配合完成加入购物车-结算-付款-发货-确认收货这一流程。 #### 前台 **商城首页** **登录** **注册** **商品详情页** **购物车** **订单管理** #### 后台开发 #### 1. ApplicationContext对象 * 是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存。同时也是ssm开发时,idea Tomcat 的应用程序上下文(一回事,有点啰嗦了)。因此在项目中访问路径是如果前边不加/(表示绝对路径),那么相对路径的相对指的是application Context. ------ #### 2. WEB-INF/jsp/include/admin下的四个jsp页面: adminFooter.jsp:页脚部分,设置版本信息,名字,年份 adminHeader.jsp:定义一些判断输入框的函数 adminNavigator.jsp:导航栏 adminPage.jsp:分页条界面,使用了bootstrap,对边界进行了处理 #### 3. 回顾一下mybatis的动态代理开发方式: * **Mapper.xml文件中的namespace与Mapper接口的全限定名相同。** * **Mapper接口方法名和Mapper.xml中定义的每个statement的id相同。** * **Mapper接口方法的输入参数类型和Mapper.xml中定义的每个sql的paramenterType的类型相同** * **Mapper接口方法的输出参数类型和Mapper.xml中定义的每个sql的resultType的类型相同。** #### 4. 查询的执行流程 ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210509193020.png) #### 5.分页 * 分页时定义了一个工具类Page,并实现了一些方法:获取前一页,后一页,总页数等。这些方法在adminPage.jsp中被调用。然后重构时用了pageHelper,但只是用它来获取分页的参数和总页数,并没有调用pageInfo这个类的方法来简化工具类Page的方法。主要是为了把分页各个的方法搞清楚。 * https://www.jianshu.com/p/d108d0cd9acf * ```java //设置了分页的开始数据项和每页的页数 PageHelper.offsetPage(page.getStart(), page.getCount()); 设置了之后查询时mybatis的方法返回的就是指定的页数,应该是底层实现了相关的功能。 ``` #### 6.逆向工程 * 逆向工程就是根据数据库中存在的表来逆向生成pojo类,mapper接口和对应的xml文件。 * MybatisGenerator插件是Mybatis官方提供的,这个插件存在一个固有的Bug,即当第一次生成了CategoryMapper.xml之后,再次运行会导致CategoryMapper.xml生成重复内容,而影响正常的运行。OverIsMergeablePlugin这个类可以解决问题。 * 在pojo包下除了表对应的实体类外还有一个xxxExample的类,**它的作用是排序,条件查询时用。** * 自动生成的xxxMapper.xml里生成的是动态sql,主要区别在于提供了一个 id="Example_Where_Clause"的SQL,借助这个可以进行多条件查询。 * 自动生成的xxxMapper:和手动编写的差不多,只是方法名发生了变化。delete:deleteByPrimaryKey。update:updateByPrimaryKey。除此之外,修改提供了updateByPrimaryKeySelective,作用是只修改变化了的字段。list:selectByExample(xxxExample example)根据条件查询 #### 7. 后台的页面 * 分类管理:listCategory.jsp –categoryController * 属性管理:listProperty.jsp editProperty.jsp(编辑)–propertyController * 产品管理:listProduct.jsp editPropertyValue.jsp(设置属性 ajax) ,listProductIamge.jsp(图片管理),editProduct.jsp(编辑) * 用户管理:listuser.jsp –usercontroller * **订单管理**:listorder.jsp –ordercontroller #### 前台开发 **首页** ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210514172026.png) **产品页** ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210515110242.png) **登录、注册,注册成功** ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210515112039.png) **分类** ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210515115250.png) **搜索** ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210515120753.png) #### 购买流程 **业务流程** ![购买的业务流程](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210515122946.png) **与表的关系** ![](https://cdn.jsdelivr.net/gh/chenshuai-coder/CDN/img/20210515124040.png) **关于orderItem的业务行为:** 1. 立即购买 —— 新增 OrderItem 2. 加入购物车 —— 新增 OrderItem 3. 查看购物车 —— 显示未和Order关联的OrderItem 4. 选中购物车中的商品 —— 选中OrderItem 5. 结算页面 —— 显示选中的OrderItem **关于order的业务行为** 1. 生成订单 —— 新增Order 2. 付款 —— 修改Order状态 3. 我的订单 —— 显示Order 4. 确认收货 —— 修改Order状态 #### 部署到服务器 * https://blog.csdn.net/weixin_44226752/article/details/116904100