到Github获取源码请点击此处

 

一. 数据库还原

  1. 新建Mysql数据库, 你可以使用自己熟悉的Mysql图形界面操作工具快速建库.

 

  1. 在新创建的ashop数据库中执行脚本文件ashop.sql. 该脚本存放在创建数据库的sql脚本目录下.

 

  1. 成功导入后, 数据库将拥有11张表

 

二. Mybatis逆向生成工具的使用

  • 接下来我们通过Mybatis逆向生成工具根据数据库表生成对应的pojo类和与Mybatis有关的文件.
  • 首先在IDE中导入Mybatis逆向生成工具/MybatisGenerator项目, 修改generatorConfig.xml文件中连接数据库的信息.

 

  • 设置好后运行GeneratorSqlmap

 

  • 运行结束后我们会在mapperpojo包下获得逆向生成的与数据库有关的数据.
  • 我们先保留着这些文件, 在下面项目环境搭建的过程中将会拷贝这些文件. 有了逆向生成工具就不用手动生成这些数据了.

三. 搭建项目环境

  • 项目的Maven结构如下:

 

  • 在idea中先创建ashopMaven项目, 然后依次按层级创建好各个模块. 最后的结果如下图:

 

  • 创建好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
  • 最后输入javajavac等指令检查是否配置成功.

 

安装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, 即可进入商城的后台管理页面


 

  • 到此为止, 环境搭建暂时告一段落. 下面补充数据库表的介绍

 

六. 数据库表分析

  1. 内容分类表: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 更新时间
  1. 内容表: 内容表: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. 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. 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 更新时间
  1. 商品描述表:tb_item_desc
列名 类型 含义
item_id bigint(20) 商品 ID
item_desc text 商品描述
created datetime 创建时间
updated datetime 更新时间
  1. 商品规格参数模板表:tb_item_param
列名 类型 含义
id bigint(20) 主键
item_cat_id bigint(20) 商品分类 ID
param_data text 规格参数模板信息
created datetime 创建时间
updated datetime 更新时间
  1. 商品规格参数信息表:tb_item_param_item
列名 类型 含义
id bigint(20) 主键
item_id bigint(20) 商品 ID
param_data text 规格参数信息
created datetime 创建时间
updated datetime 更新时间
  1. 订单表: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) 买家是否已经评价
  1. 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) 商品图片地址
  1. 物流表: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 更新时间
  1. 用户表:tb_user
列名 类型 含义
id bigint(20) 用户表主键
username varchar(50) 用户名
password varchar(32) 密码,加密存储
phone varchar(20) 注册手机号
email varchar(50) 注册邮箱
created datetime 创建时间
updated datetime 更新时间

Java电商项目-1.构建数据库,搭建项目环境的更多相关文章

  1. 项目二:企业级java电商网站开发(服务端)

    声明:项目源于网络,支持正版教程,学习使用,仅记录在此 项目介绍 企业级java电商网站开发(服务端),模块划分:用户管理,商品管理,商品品类管理,订单管理,订单详情管理,购物车管理,收货地址管理,支 ...

  2. Java电商支付系统手把手实现(二) - 数据库表设计的最佳实践

    1 数据库设计 1.1 表关系梳理 仔细思考业务关系,得到如下表关系图 1.2 用户表结构 1.3 分类表结构 id=0为根节点,分类其实是树状结构 1.4 商品表结构 注意价格字段的类型为 deci ...

  3. Java电商支付系统实战(一)- 简介

    现如今,支付成为热点 对于电商业务,这都是不可或缺的 核心功能剖析 下单->支付 nginx 将用户请求反向代理到我们编写的电商系统 = 下单 之后,点击支付跳转到支付系统,最后对接 通过跳转将 ...

  4. 开源 java 电商系统

    shop++是基于spring.springmvc等主流框架开发,参考资料比较全面,上手容易: 比 javashop 代码可读性好. 适合二次开发 6.broadleaf基于spring.Spring ...

  5. Web项目--------原Oracle数据库的项目同时兼容MySql

    原Oracle数据库的项目同时兼容MySql步骤: (一)修改资源配置文件applicationContext-dataSource.xml的数据库连接 Oracle数据库中加上from dual的原 ...

  6. create-react-app 基于ts项目,使用react-router-dom搭建项目

    准备工作 来个react项目 create-react-app 基于TS的项目 ts项目安装后 删除node_modules,重新 yarn install, 不然jsx会报错 安装React-rou ...

  7. Java电商项目-6.实现门户首页数据展示_Redis数据缓存

    目录 项目的Github地址 需求介绍 搭建Redis集群环境 下面先描述单机版redis的安装 下面将进行Redis3主3从集群环境搭建 基于SOA架构, 创建门户ashop-portal-web门 ...

  8. Java电商项目-3.使用VSFTPD_Nginx完成商品新增

    目录 到Github获取源码请点击此处 一. 商品类目查询 二. FTP图片服务器的搭建 图片上传思路介绍 Linux中安装vsftpd 接着配置ftp服务, 让外网可以访问 Http服务器搭建 Ng ...

  9. Java电商项目-8.实现SSO单点登陆

    目录 创建ashop-sso-web单点登陆系统 用户名唯一性验证 用户注册 用户登陆 获得用户登陆状态 实现安全退出 项目的Github地址 创建ashop-sso-web单点登陆系统 先创建好模块 ...

随机推荐

  1. [译]Vulkan教程(21)顶点input描述

    [译]Vulkan教程(21)顶点input描述 Vertex input description 顶点input描述 Introduction 入门 In the next few chapters ...

  2. Idea2019激活码

    此教程仅用作个人学习,请勿用于商业获利,造成后果自负!!! 此教程已支持最新2019.2版本 此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: idea官网下载地址:http:/ ...

  3. Linux之自动化部署

    No.1 自动化部署git项目 一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一 ...

  4. C# 动态加载资源

    在xaml中控件通过绑定静态资源StaticResource来获取样式Style有多种方式,TextBlockStyle.xaml是一个ResourceDictionary,包含了所需样式 通过相对路 ...

  5. ASP.NET Core 2.2 WebApi 系列【七】泛型仓储模式和工作单元

    在之前的泛型仓储模式实现中,每个增删改都调用了SaveChanges方法,导致每次更新都提交了事务. 在实际开发过程中,我们经常遇到同时操作多张表数据,那么按照之前的写法,对数据库提交了多次操作,开启 ...

  6. Implement Property Value Validation in Code 在代码中实现属性值验证(XPO)

    This lesson explains how to set rules for business classes and their properties. These rules are val ...

  7. Zimbra

    第一步:利用XXE读取配置文件 这里利用了CVE-2019-9670漏洞来读取配置文件,你需要在自己的VPS服务器上放置一个dtd文件,并使该文件能够通过HTTP访问.为了演示,我在GitHub上创建 ...

  8. Thymeleaf常用语法:模板文件中表达式调用Java类的静态方法

    在模板文件的表达式中,可以使用“${T(全限定类名).方法名(参数)}”这种格式来调用Java类的静态方法. 开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1. ...

  9. expect 知识与示例说明

    expect 知识与示例说明 2012/04/10 chenxin 2019/07/07 update Chenxin 参考 https://www.cnblogs.com/yinghao1991/p ...

  10. Springboot 整合 MyBatis(一):跑起来

    0x1 环境 1. 系统:Windows 10 2. IDE:IntelliJ IDEA 2018.3 x64 0x2 创建项目 1.创建一个SpringBoot项目 选择Spring Initail ...