Java电商项目-1.构建数据库,搭建项目环境
目录
到Github获取源码请点击此处
一. 数据库还原
- 新建Mysql数据库, 你可以使用自己熟悉的Mysql图形界面操作工具快速建库.
- 在新创建的ashop数据库中执行脚本文件
ashop.sql
. 该脚本存放在创建数据库的sql脚本
目录下.
- 成功导入后, 数据库将拥有11张表
二. Mybatis逆向生成工具的使用
- 接下来我们通过Mybatis逆向生成工具根据数据库表生成对应的pojo类和与Mybatis有关的文件.
- 首先在IDE中导入
Mybatis逆向生成工具/MybatisGenerator
项目, 修改generatorConfig.xml
文件中连接数据库的信息.
- 设置好后运行
GeneratorSqlmap
- 运行结束后我们会在
mapper
与pojo
包下获得逆向生成的与数据库有关的数据. - 我们先保留着这些文件, 在下面项目环境搭建的过程中将会拷贝这些文件. 有了逆向生成工具就不用手动生成这些数据了.
三. 搭建项目环境
- 项目的Maven结构如下:
- 在idea中先创建
ashop
Maven项目, 然后依次按层级创建好各个模块. 最后的结果如下图:
- 创建好Maven项目后需要为各个子模块添加依赖, 具体的依赖放在
项目中各个模块的pom依赖
目录下. - 接下来在
ashop-rpc-service-impl
模块的src/main/resource
目录下添加配置文件, 所有配置文件均放在resource(配置文件)
目录下.
- 接下来, 把之前用逆向生成工具生成的
pojo
类放到pojo
模块中(在java目录下创建com.ashop.pojo包
), 并把逆向工程生成的mapper
包下的mapper文件放到mapper模块中, 注意.java
和.xml
文件是要分开放的,.java
放在源码位置,.xml
放在resource
资源目录下 - 我项目做到这里的时候遇到了错误, Mapper文件报错, 原因是编译打包后mapper接口文件和.xml文件不在同一个包内. 原因是我在resources目录下建包的时候建错了...
- 至此为止项目的框架搭建完成.
四. 在linux虚拟机上部署zookeeper, 搭建Dubbo服务.
- 先新建一台linux虚拟机, 然后使用类似Xshell等工具将jdk和zookeeper的安装包上传到虚拟机中.
linux虚拟机安装JDK
- 下面是JDK的安装过程:
- 首先你需要把linux版本的JDK上传到虚拟机上.
- 创建java安装目录:
mkdir /usr/local/jdk
- 解压JDK压缩包:
tar zxvf 跟上JDK压缩包名
- 拷贝解压后的JDK到安装目录中:
cp -rf 解压JDK文件名 /usr/local/jdk/
- 配置环境变量: 打开编辑器
vi /etc/profile
, 追加以下内容
- 退出编辑器, 输入指令让环境变量生效:
source /etc/profile
- 最后输入
java
或javac
等指令检查是否配置成功.
安装zookeeper
- 首先把zookeeper的压缩包上传到linux虚拟机上
- 创建存放zookeeper的目录:
mkdir /usr/local/zookeeper
- 解压上传到虚拟机的zookeeper压缩包:
tar zxvf 压缩包名
- (演示拷贝)拷贝解压文件到安装目录:
cp -rf 解压文件名 /usr/local/zookeeper/zk1
- 进入
zk1
目录, 在当前目录下创建data目录:mkdir data
- 进入
data
目录, 并创建myid文件, 并在文件中输入1(作为第一个zookeeper的唯一标识):vi myid
, 输入1后保存退出
- 回到zk1目录, 进入conf目录, 拷贝默认配置文件:
cp zoo_sample.cfg zoo.cfg
. - 修改新的配置文件, 主要修改三个地方: 1. dataDir 2. client 3. 集群信息
- 配置完后继续拷贝2份zookeeper到
/usr/local/zookeeper
目录中, 我们要搭建集群, 三份zookeeper分别命名为zk1, zk2, zk3
- 注意zk2和zk3同样对配置文件要进行配置.
- 其中zk2的端口号配置为2182, zk3的端口号配置为2183, 除此之外配置文件最下面的集群部署三个配置文件都保持一致.
- 接着, 关闭防火墙:
service iptables stop
- 启动3个zookeeper服务:
./zk1/bin/zkServer.sh start
, 还要启动zk2和zk3... - 查看某个zookeeper的状态:
./zk1/bin/zkServer.sh status
- 连接zookeeper集群查看信息:
./zk1/bin/zkCli.sh
- 查看某个节点的信息:
ls /路径
- 查看某个节点保存的具体内容:
get /路径
- 提示: 你可以设置防火墙开放2181, 2182, 2183三个端口, 这样就不需要每次去手动关闭防火墙了.
五. 搭建ashop-manager-web项目
ashop-manager-web
模块的作用相当于普通BS项目中的后台. 只不过ashop-manager-web
通过调用远程方法完成对数据库的操作. 这就是SOA架构中面向服务的思想.- 首先在ashop项目下创建模块ashop-manager-web, 打包模式选择war包
- 给后端管理系统添加依赖, 首先需要依赖
service
模块, 然后导入相关的依赖, 依赖样本在后台管理系统的配置文件
目录中. - 在模块的
src/main/resource
目录下, 完成spring配置文件的配置. - 首先需要给出
applicationContext-service.xml
配置文件. - 然后是
applicationContext-dubbo.xml
配置文件 - 最后创建
springmvc.xml
配置文件 - 拷贝提供的静态资源到
ashop-manager-web
模块中. (拷贝到webapp中)
- 接下来在后端管理系统的java目录下创建
com.ashop.manager.controller
包, 并创建PageController
类, 在类中编写代码完成页面跳转以及管理后台首页的加载.
- 然后对
ashop
总项目进行install, 你可能会在install时遇到一些小错误, 静下心根据错误提示修改即可. - install完后到
ashop-manager-web
项目中, 使用tomcat7插件进行发布. (Maven命令-Tomcat7:run)
- 启动完毕后我们到浏览器的地址栏中输入
http://localhost:8080
, 即可进入商城的后台管理页面
- 到此为止, 环境搭建暂时告一段落. 下面补充数据库表的介绍
六. 数据库表分析
- 内容分类表:tb_content_category
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) | 内容分类 |
parent_id | bigint(20) | 父类目 ID=0 时,代表的是一级的类目 |
name | varchar(50) | 分类名称 |
status | int(1) | 状态:可选值:1(正常),2(删除) |
sort_order | int(4) | 排列序号,表示同级类目的展现次序,如数值相等 则按名称次序排列。取值范围:大于零的整数 |
is_parent | tinyint(1) | 该类目是否为父类目,1 为 true,0 为 false |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 内容表: 内容表:tb_content
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) | 主键 |
category_id | bigint(20) | 内容分类 ID |
title | varchar(200) | 内容标题 |
sub_title | varchar(100) | 子标题 |
title_desc | varchar(500) | 标题描述 |
url | varchar(500) | 链接 |
pic | varchar(300) | 图片绝对路径 |
pic2 | varchar(300) | 图片 2 |
content | text | 内容 |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 1.3 商品表:tb_item
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) | 商品 id,同时也是商品编号 |
title | varchar(100) | 商品标题 |
sell_point | varchar(500) | 商品卖点 |
price | bigint(20) | 商品价格,单位为:分 |
num | int(10) | 库存数量 |
barcode | varchar(30) | 商品条形码 |
image | varchar(500) | 商品图片,以逗号分隔的多个图片的 url 地址字符 串 |
cid | bigint(10) | 所属类目,叶子类目 |
status | tinyint(4) | 商品状态,1-正常,2-下架,3-删除 |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 1.4 商品分类表:tb_item_cat
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) | 商品分类 ID |
parent_id | bigint(20) | 父类目 ID=0 时,代表的是一级的类目 |
name | varchar(50) | 类目名称 |
status | int(1) | 状态。可选值:1(正常),2(删除) |
sort_order | int(4) | 排列序号,表示同级类目的展现次序,如数值相等 则按名称次序排列。取值范围:大于零的整数 |
is_parent | tinyint(1) | 该类目是否为父类目,1 为 true,0 为 false |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 商品描述表:tb_item_desc
列名 | 类型 | 含义 |
---|---|---|
item_id | bigint(20) | 商品 ID |
item_desc | text | 商品描述 |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 商品规格参数模板表:tb_item_param
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) 主键 | |
item_cat_id | bigint(20) | 商品分类 ID |
param_data | text | 规格参数模板信息 |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 商品规格参数信息表:tb_item_param_item
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) | 主键 |
item_id | bigint(20) | 商品 ID |
param_data | text | 规格参数信息 |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 订单表:tb_order
列名 | 类型 | 含义 |
---|---|---|
order_id | varchar(50) | 订单 id |
payment | varchar(50) | 实付金额。精确到 2 位小数;单位:元。如:200.07, 表示:200 元 7 分 |
payment_type | int(2) | 支付类型,1、在线支付,2、货到付款 |
post_fee | varchar(50) | 邮费。精确到2 位小数;单位:元。如:200.07,表示:200 元 7 分 |
status | int(10) | 状态:1、未付款,2、已付款,3、未发货,4、已 发货,5、交易成功,6、交易关闭 |
create_time | datetime | 订单创建时间 |
update_time | datetime | 订单更新时间 |
payment_time | datetime | 付款时间 |
consign_time | datetime | 发货时间 |
end_time | datetime | 交易完成时间 |
close_time | datetime | 交易关闭时间 |
shipping_name | varchar(20) | 物流名称 |
shipping_code | varchar(20) | 物流单号 |
user_id | bigint(20) | 用户 id |
buyer_message | varchar(100) | 买家留言 |
buyer_nick | varchar(50) | 买家昵称 |
buyer_rate | int(2) | 买家是否已经评价 |
- tb_order_item
列名 | 类型 | 含义 |
---|---|---|
id | varchar(20) | 主键 |
item_id | varchar(50) | 商品 id |
order_id | varchar(50) | 订单 id |
num | int(10) | 商品购买数量 |
title | varchar(200) | 商品标题 |
price | bigint(50) | 商品单价 |
total_fee | bigint(50) | 商品总金额 |
pic_path | varchar(200) | 商品图片地址 |
- 物流表:tb_order_shipping
列名 | 类型 | 含义 |
---|---|---|
order_id | varchar(50) | 订单 ID |
receiver_name | varchar(20) | 收货人全名 |
receiver_phone | varchar(20) | 固定电话 |
receiver_mobile | varchar(30) | 移动电话 |
receiver_state | varchar(10) | 省份 |
receiver_city | varchar(10) | 城市 |
receiver_district | varchar(20) | 区/县 |
receiver_address | varchar(200) | 收货地址,如:xx 路 xx 号 |
receiver_zip | varchar(6) | 邮政编码,如:310001 |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |
- 用户表:tb_user
列名 | 类型 | 含义 |
---|---|---|
id | bigint(20) | 用户表主键 |
username | varchar(50) | 用户名 |
password | varchar(32) | 密码,加密存储 |
phone | varchar(20) | 注册手机号 |
varchar(50) | 注册邮箱 | |
created | datetime | 创建时间 |
updated | datetime | 更新时间 |