Java电商项目-1.构建数据库,搭建项目环境
目录
到Github获取源码请点击此处
一. 数据库还原
- 新建Mysql数据库, 你可以使用自己熟悉的Mysql图形界面操作工具快速建库.

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

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

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

- 设置好后运行
GeneratorSqlmap

- 运行结束后我们会在
mapper与pojo包下获得逆向生成的与数据库有关的数据. - 我们先保留着这些文件, 在下面项目环境搭建的过程中将会拷贝这些文件. 有了逆向生成工具就不用手动生成这些数据了.
三. 搭建项目环境
- 项目的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 - 最后输入
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 | 更新时间 |
Java电商项目-1.构建数据库,搭建项目环境的更多相关文章
- 项目二:企业级java电商网站开发(服务端)
声明:项目源于网络,支持正版教程,学习使用,仅记录在此 项目介绍 企业级java电商网站开发(服务端),模块划分:用户管理,商品管理,商品品类管理,订单管理,订单详情管理,购物车管理,收货地址管理,支 ...
- Java电商支付系统手把手实现(二) - 数据库表设计的最佳实践
1 数据库设计 1.1 表关系梳理 仔细思考业务关系,得到如下表关系图 1.2 用户表结构 1.3 分类表结构 id=0为根节点,分类其实是树状结构 1.4 商品表结构 注意价格字段的类型为 deci ...
- Java电商支付系统实战(一)- 简介
现如今,支付成为热点 对于电商业务,这都是不可或缺的 核心功能剖析 下单->支付 nginx 将用户请求反向代理到我们编写的电商系统 = 下单 之后,点击支付跳转到支付系统,最后对接 通过跳转将 ...
- 开源 java 电商系统
shop++是基于spring.springmvc等主流框架开发,参考资料比较全面,上手容易: 比 javashop 代码可读性好. 适合二次开发 6.broadleaf基于spring.Spring ...
- Web项目--------原Oracle数据库的项目同时兼容MySql
原Oracle数据库的项目同时兼容MySql步骤: (一)修改资源配置文件applicationContext-dataSource.xml的数据库连接 Oracle数据库中加上from dual的原 ...
- create-react-app 基于ts项目,使用react-router-dom搭建项目
准备工作 来个react项目 create-react-app 基于TS的项目 ts项目安装后 删除node_modules,重新 yarn install, 不然jsx会报错 安装React-rou ...
- Java电商项目-6.实现门户首页数据展示_Redis数据缓存
目录 项目的Github地址 需求介绍 搭建Redis集群环境 下面先描述单机版redis的安装 下面将进行Redis3主3从集群环境搭建 基于SOA架构, 创建门户ashop-portal-web门 ...
- Java电商项目-3.使用VSFTPD_Nginx完成商品新增
目录 到Github获取源码请点击此处 一. 商品类目查询 二. FTP图片服务器的搭建 图片上传思路介绍 Linux中安装vsftpd 接着配置ftp服务, 让外网可以访问 Http服务器搭建 Ng ...
- Java电商项目-8.实现SSO单点登陆
目录 创建ashop-sso-web单点登陆系统 用户名唯一性验证 用户注册 用户登陆 获得用户登陆状态 实现安全退出 项目的Github地址 创建ashop-sso-web单点登陆系统 先创建好模块 ...
随机推荐
- 《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》
DevOps实践:驭DevOps之力强化技术栈并优化IT运行 主旨 这本书并非坐而论道,而是介绍了DevOps全流程中的许多实践,以及相应工具的运用.虽然随着时代的推移,工具将来可能会过时,但是这些实 ...
- Git 将已有项目推送到新建的远程仓库
目录 一.需求: 二.较快捷的操作: 一.需求: 将一个本地的项目推送到一个新建的远程仓库中: 二.较快捷的操作: 1.创建一个远程仓库 以此为例:http://192.168.1.183/git/p ...
- 带有Spring Boot和MySQL的Docker:简介(Part 1)
通过优锐课java学习分享中,我们看一下带有Spring Boot和MySQL的Docker教程.非常实用,分享给大家参考学习. Docker是一种技术,开发人员或DevOps团队可以使用容器来构建, ...
- C#关于MySQL中文乱码问题
本人在写一个测试demo的时候,遇到一个问题就是添加的中文数据在数据库定义的明明是varchar类型,但是显示出来还是乱码,不过还是自己粗心导致的问题. 以下三种方式可以自查一下: 1. 首先检查 ...
- 跨域问题,解决方案-Nginx反向代理
跨域问题,解决之道 跨域问题,在日常开发过程中,是一个非常熟悉的名词.今天的话题,结合我之前的项目场景,讨论下<跨域问题,解决之道>. 跨域是什么 跨域问题,是由于JavaScript出于 ...
- shiro实战(2)--ssm
一.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=& ...
- NIO中Buffer的重要属性关系解析
Buffer 是java NIO中三个核心概念之一 缓存, 在java的实现体系中Buffer作为顶级抽象类存在 简单说,Buffer在做什么? 我们知道,在java IO中体系中, 因为InputS ...
- (四十六)c#Winform自定义控件-水波进度条-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- linux中服务(service)管理
一.介绍 服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux 中非常重 ...
- Doxygen程序注释转换说明文档
Doxygen使用 https://www.jianshu.com/p/9464eca6aefe