Java高级电商项目-1.构建数据库,搭建项目环境

目录

  • 到Github获取源码请点击此处
  • 一. 数据库还原
  • 二. Mybatis逆向生成工具的使用
  • 三. 搭建项目环境
  • 四. 在linux虚拟机上部署zookeeper, 搭建Dubbo服务.
    • linux虚拟机安装JDK
    • 安装zookeeper
  • 五. 搭建ashop-manager-web项目
  • 六. 数据库表分析

到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资源目录下

?

  • 至此为止项目的框架搭建完成.

?

四. 在linux虚拟机上部署zookeeper, 搭建Dubbo服务.

  • 先新建一台linux虚拟机, 然后使用类似Xshell等工具将jdk和zookeeper的安装包上传到虚拟机中.

linux虚拟机安装JDK

  • 下面简述JDK的安装过程:
  • 创建java安装目录: mkdir /usr/local/java
  • 解压JDK到该目录: tar zxvf 跟上JDK压缩包名
  • 拷贝解压后的JDK到安装目录中: cp -rf 解压JDK文件名 /usr/local/java/
  • 配置环境变量: 打开编辑器vi /etc/profile, 追加以下内容

  • 退出编辑器, 让环境变量生效: source /etc/profile
  • 最后输入javajavac等指令检查是否配置成功.

安装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目录中, 我们要搭建集群, 分别命名为zk1, zk2, zk3
  • 注意zk2和zk3同样对配置文件要进行配置.
  • 接着, 关闭防火墙: 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 /路径
  • (以后会补充上具体的图文过程...)

?

五. 搭建ashop-manager-web项目

  • 这个项目是商城的后台管理系统, 调用ashop-rpc提供的服务, 实现后台数据的管理.
  • 首先在ashop项目下创建模块ashop-manager-web, 打包模式选择war包


?

  • 给后端管理系统添加依赖, 首先需要依赖service模块, 然后导入相关的依赖, 依赖样本在后台管理系统的配置文件目录中.
  • 在模块的src/main/resource目录下, 完成spring配置文件的配置.
  • 首先需要给出applicationContext-service.xml配置文件.
  • 然后是applicationContext-dubbo.xml配置文件
  • 最后创建springmvc.xml配置文件
  • 拷贝静态资源

?

  • 接下来在后端管理系统的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 更新时间

原文地址:https://www.cnblogs.com/tanshaoshenghao/p/10829778.html

时间: 2024-10-08 11:12:59

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

Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式百度云实战分享

muke慕课实战课程分享QQ313675301 新增课程: Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式百度云实战分享 后端开发: 1.高级java软件架构师实战培训视频教程2.大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分布式电商项目视频教程3.Spark Streaming实时流处理项目实战4.Java校招面试 Google面试官亲授5.Java开发企业级权限管理系统6.Java大牛 带你从0到上线开发企业级电商项目7.Java

Java企业级电商项目架构演进之路Tomcat集群与Redis分布式

Java企业级电商项目架构演进之路Tomcat集群与Redis分布式网盘地址:https://pan.baidu.com/s/1taAooW3AhdGcdGSvOLqjkg 密码:nwip备用地址(腾讯微云):https://share.weiyun.com/5JdkNHX 密码:s9pm74 第1章 课程介绍[赠送一期源码+一期内容回顾]第2章 Lombok框架集成及原理解析第3章 Maven环境隔离应用场景及验证实战第4章 Tomcat集群演进详解及环境搭建第5章 Redis基础强化第6章

Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式

Java企业级电商项目架构演进之路  Tomcat集群与Redis分布式 Redisson介绍Redisson是架设在Redis基础上的一个java驻内存数据网格.Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势.在java使用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类.使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度.同时结合各富特色的分布

Java生鲜电商平台-微服务架构概述

Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化的速度迟缓并且变革动力不足. 其中的原因存在着复杂性以及多样性,我想主要的原因是没有一套整体的解决方案能够让工程师在面临稳定性风险下,毅然决然地实施系统重构.当系统应用规模随着业务的迅速发展时,系统的重要性愈发突出,开发人员将对系统的改造尤为敏感,从之前的徘徊犹豫,随之变得更加保守,只能延续过去的技

Java生鲜电商平台-缓存架构实战

Java生鲜电商平台-缓存架构实战 说明:在Java生鲜电商中,缓存起到了非常重要的作用,目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个key瞬间被数万甚至十万的并发请求打爆. 2.大value 某个key对应的value可能有GB级的大小,导致查询value的时候导致网络相关的故障问题. 缓存集群作用 在缓存里放一些平时不怎么变动的数据,然后用户在查询大量的平时不怎么变动的数据的时候,可以直接从缓存里走了.缓存集群的并发能力是很强的

Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才是检索结果.首先,电商的搜索引擎并没有爬虫系统,因为所有的数据都是结构化的,一般都是微软的数据库或者 Oracle 的数据库,所以不用像百度一样用「爬虫」去不断去别的网站找内容,当然,电商其实也有自己的「爬虫」系统,一般都是抓取友商的价格,再对自己进行调整. 第二点,就是电商搜索引擎的过滤功能其实比

Java生鲜电商平台-电商订单系统全解析

Java生鲜电商平台-电商订单系统全解析 今天分享将会分为以下三个环节来阐述: 1.订单系统的介绍 2.订单系统的解构 3.垂直电商订单系统设计思路 一.什么是订单系统? 订单管理系统(OMS)是物流管理系统的一部分,通过对客户下达的订单进行管理及跟踪,动态掌握订单的进展和完成情况,提升物流过程中的作业效率,从而节省运作时间和作业成本,提高物流企业的市场竞争力.顾名思义,电商系统就是用户.平台.商户等对于订单的管控.跟踪的系统,衔接着商品中心.wms.促销系统.物流系统等,是电子商务的基础模块:

Java生鲜电商平台-电商虚拟币的充值与消费思考

Java生鲜电商平台-电商虚拟币的充值与消费思考 项目背景 最近由于项目业务原因,需要为系统设计虚拟币的充值及消费功能.公司内已经有成熟的支付网关服务,所以重点变成了如何设计项目内虚拟币的充值流程,让整个充值流程都实现幂等,确保用户的虚拟币余额不会重复增加或扣减. 商品购买及支付流程 微信支付时序图 (1)用户购买商品,商户后台请求生成支付订单并返回相关信息到客户端. (2)客户端根据返回的信息唤起支付SDK,用户确认支付. (3)用户完成支付后,支付系统会异步通知商户后台支付结果. (4)商户

Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解

说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容. 广泛应用在包括了用户登入.数字签名.数据传输等多个场合.今天我把常见的加密算法全部整理在这里,供大家学习参考. 首先,大家要知道加密算法能干什么,利用加密算法来对数据通信的过程进行加密传输是一种最常见的安全手段.利用该手段能够达到一下三个目的: 1.数据保密性,防止用户数据被窃取或泄露: 2.数据完整性,防止用户传输的数据被篡改: 3.通信双方身份确认,确保数据来源合法: 常见