移动商城第一篇搭建项目环境+数据模型

前言

本次该项目使用的技术如下:

这里写图片描述

搭建Oracle数据库环境

本次我们用Oracle作为我们的服务器,我们一般开发并不是把数据表放在我们练习的scott用户下的

需要我们自己创建用户、创建默认的表空间

使用超级管理员账号登陆Oracle

这里写图片描述

创建表空间

这里写图片描述

创建表空间并指定用户

单单创建了用户是不能够使用的,我们还需要为它授权

我们来查看一下当前用户默认的表空间

这里写图片描述

导入相关的数据:

使用Maven搭建环境

因为Maven有两大特点:

依赖管理

项目构建

依赖管理非常好用,我们就不用拷贝对应的jar包,直接从别的项目依赖过来就行了

我们本次的项目分为前台和后台

值得注意的是:

前台是给用户访问的

后台是给管理员访问的

基于这么两个特性,那么前台系统和后台系统应该是分开的【当前台系统访问量奔溃的时候,后台系统不会受到影响

由于我们前台和后台系统的某些逻辑是一致的【都要查询商品..根据商品id获取具体商品信息等等】,因此我们需要把相同的逻辑抽取出来,多添加一个核心模块Core

从前边也已经说了,我们如果使用到图片上传的话,也应该把该逻辑抽取出来,因为我们在备份的时候,是备份该WEB项目的数据。如果把图片放在同一个WEB项目下,那么就非常难处理图片了。

因此,我们也需要把文件单独放在文件服务器上

到目前为止的分析,我们现在有4个独立的模块了….

文件服务器

Core

后台系统

前台系统

当我们把项目发布出去的时候,我们需要把每个模块都要构建

因此,我们再用一个parent模块把它们4个管理起来!做到一次构建的效果!

这里写图片描述

这里写图片描述

idea下构建Maven项目

创建父模块,在父模块下创建4个子模块。在Idea下直接创建Model就行了

这里写图片描述

最终在Idea创建出来的目录结构是这样子的:

这里写图片描述

重置Maven的设置,使用自带的Maven

这里写图片描述

这里写图片描述

编写pom

父项目将其他4个子项目管理起来

这里写图片描述

portal和console对core依赖:

这里写图片描述

将原型页面拷贝到项目中

首先,我在Idea创建Maven项目的时候是没有用任何的模版的。因此,需要我们自己创建WEB功能。

这里写图片描述

访问portal客户端的原型页面没有问题

这里写图片描述

访问console页面的原型页面的时候出现了以下的错误:

这里写图片描述

关注是不是没有使用webapp来生成maven项目的模版

使用webapp模版来生成Maven项目才行。不然找不到类。

页面框架解析

他的JSP是非常简单的,我们来看一下:

明显地,我们看见它用了menu icon这么一个类来修饰,如果我们使用过bootstrap、easyui这么一类的框架的话,那么我们对这些的修饰也就不陌生了!

我们点进去它的包含JSP页面中

发现这正是我们的左边菜单栏的数据

这里写图片描述

那么上边横线的菜单栏从何而来的呢???

我们发现项目中有好几个配置文件:

这里写图片描述

菜单栏的配置文件,该配置文件在Tomcat启动的时候加载的

从另外的配置文件中,我们可以发现他使用了装饰器来修饰我们的JSP页面

找到默认的装饰器JSP页面,找到了对应的修饰菜单

我们发现该页面包含了taglibs.jsp,taglibs中又有众多的标签引入

而sitemesh就是我们在web.xml配置的过滤器,它的功能就是用来渲染我们的页面的

再次看回我们的index页面,我们可以发现有那么一段代码

content和上面的name是一致的

模拟增加新功能

根据上面我们所看到的,我们在原有的页面上增添新的功能,看看我们的分析是否有错误!

在菜单的配置文件中新增学生管理

随后在修饰器中新增学生管理菜单项

接着根据其他的index页面,编写我们学生管理的JSP页面

左侧菜单的JSP

效果:

这里写图片描述

Mybatis和Spring环境搭建

由于我们的所编写的dao层、service代码可能前台和后台都需要用到的,因此我们把环境搭建在core模块中

逆向工程

首先,我们要做的就是品牌管理,我们首先来看看原型界面的的品牌管理

这里写图片描述

涉及到的数据库表在我们的powerdesigner中就已经定义过了

这里写图片描述

我们来看一下对应数据库表的数据

这里写图片描述

添加逆向工程插件

编写逆向工程文件

生成的文件:

这里写图片描述

sqlMapping映射文件也算是一种资源文件把,因此我把它移到resources中了

这里写图片描述

编写Mybatis配置文件

sqlMapConfig.xml

创建beans.xml文件

添加log4j

log4j.properties

Dao层

编写Dao接口

编写Dao实现 ##

mybatis插件只有最后两个方法没有帮我们自动生成,其他的SQL语句都自动生成了。

编写Service

Service接口

Service实现

测试Service

在idea中,我们新建一个test目录

这里写图片描述

对着我们的serviceImpl使用快捷键ctrl+shift+t

这里写图片描述

idea就会帮我们自动把想要测试的方法把相关的目录创建出来了

这里写图片描述

我们在插入数据的时候,记得要改写SQL语句,因为默认是没有主键的。下面就是我们把在主键列上使用自动增长

插入成功

这里写图片描述

Controller层配置

编写SpringMVC的配置文件

springmvc.xml

分析商品的数据模型

本篇主要是分析我们的项目中的数据模型…一般地,我们都是用powerdesigner来设计我们的数据库模型表…

首先我们要看懂powerdesigner箭头的意义:

表之间的关系

一对多:箭头所指向的表是一的一端

多对一:箭头背向的方向的表是多的一端(除了一对一)

多对多:在数据库模型上,由三张表来组成,中间表体现的是其余两张表的关系是多对多,中间表只能有两个表的主键作为外键来组成,箭头由中介表来分别指向其余两张表。

一对一:箭头指向的方向是一的一端,背向的方向的表使用指向的方向的表的主键作为主键和外键就形成了一对一的关系。

品牌管理

我们前面已经写了品牌管理了,我们来看看数据库设计是怎么样的。

首先是我们的品牌表:主要定义了品牌基本信息字段

这里写图片描述

商品类目

该类目表主要对商品进行分类…

这里写图片描述

同时他还有自关联的连接线,那是什么意思呢??

该商品类目表拥有父类目的属性

这里写图片描述

也就是说,类目我们可以看成是树形结构的:

这里写图片描述

是可以根据当前类目查询出上一级类目的

这里写图片描述

类目与品牌

一个类目下是可以有多个品牌的,而一个品牌可以有多个类目..

这里写图片描述

我们可以举个例子来理解:

空调类目下:

海尔

格力

海尔:

洗衣机

空调

格力:

洗衣机

空调

对于海尔,格力这样的品牌,不仅仅是做空调,还可以做洗衣机。而空调和洗衣机又是不同的类目下的。

类目与商家

为了实现更好地管理,我们还有类目所对应的商家表

这里写图片描述

商品

我们的商品主要是手机和号卡

通过在类目表中预置的手机类目和号卡类目来区分

而一个品牌也对应着多个商品

苹果

iphone5s

iphone6s

这里写图片描述

我们商品的存储事例数据如下:

这里写图片描述

除了与品牌和类目之间的关联关系,还存储着一些销售语、是否上架、等信息

这里写图片描述

商品标签图片和大字段表

我们的商品标签图片也是用另外一张数据库表来存储。它有着商品的全部属性

而当商品信息太多,写不完的时候就需要用到大字段表了。

这里写图片描述

商品属性

我们使用了一张专门管理商品属性的数据表来进行展示对应的商品属性

该数据库表可以设置该属性是否前台展示,以及属性是怎么录入的:

树形

文本框

下拉框

这里写图片描述

数据如下所示:

这里写图片描述

类目与属性

对于属性而言也是分开的:

要么是手机

要么是手机子属性的

因此我们的属性与类目也是存在:一个类目对应多个属性的关系的

参数

我们可以发现在我们的商品属性表中,如果一个属性是可以多选的话,那么在属性值上是使用“,”逗号来进行分割的

这里写图片描述

而我们的参数表就是对其选中的值进行保存!

feature是用于展示我们的所有属性数据

para是用于存储用户选中的属性数据

这里写图片描述

商品与参数与属性关系

一个商品是有多个参数的,而一个属性也对应着多个参数。

这里写图片描述

库存与价格值

库存也是用一张表来存储的,对应地,不同类型的商品对应的不同的库存

我们可以简单理解成一下的情况:

这里写图片描述

总结

我们的项目最好分成前台和后台两个模块,这样的话,即时前台模块访问量太大,我们后台的模块也不会受到影响

图片服务器独立起来也是非常有必要的。

为了做到一次的构建、还使用了一个parent模块把它们管理起来

使用Idea时构建maven项目,最好就使用web-app模版来生成。

对于页面的这些框架,我们主要看得懂它大概的流程就行了。没必要深入,因为每个项目可能用的都不一样。

品牌管理其实就是CURD操作而已,从Idea中配置逆向工程的插件。生成出对应的POJO、映射文件,再编写DAO、Service、Controller即可

到目前为止,我们仅仅是简单分析了数据库表的对应关系。是并没有深刻理解它为什么要设计成这样子的,当我们一边写代码的时候,再回顾它的设计。可能效果会更好。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180322G180E700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券