资料:云盘连接 提取码:sb1m
拿到资料后,把里面虚拟机进行解压,然后用VMware虚拟机软件打开Centos-changgou.vmx,
然后打开,用户名:root,密码:123456。
里面后期用到的环境都已经安装好了,不需要我们浪费时间搭建环境。
接下来需要打开VMware-编辑-虚拟网络配置 打开NAT设置
然后点击NAT设置,修改IP
接下来在CentOS终端中输入 vi /etc/sysconfig/network-scripts/ifcfg-ens33
reboot重启虚拟机,然后就可以通过ssh工具对其进行连接,ip是192.168.1.99密码123456
然后进入mysql容器
docker exec -it mysql /bin/bash
重置mysql密码
首先打开配置文件的命令
vi /etc/mysql/my.cnf
在最后添加
[mysqld]
skip-grant-tables
重启msyql
docker restart mysql
再次登录
mysql -uroot -p
设置root密码为空
use mysql;
select user,authentication_string,host from user;
更新为空
update user set authentication_string='' where user='root';
flush privileges;
退出mysql,再次执行vi /etc/mysql/my.cnf,把之前添加的内容删掉,保存。
使用root登录
mysql -u root
修改密码为root
alter user 'root'@'localhost' IDENTIFIED BY 'root';
alter user 'root'@'%' IDENTIFIED BY 'root';
flush privileges;
这时你的mysql登录密码就可以使用root登录了。
连接成功之后就可以看到若干数据表,查看er图我们可以发现,表与表之间并没有关联关系。
在我们平时做项目时,标语表之间都要遵循三范式,但是我们做大型项目的时候,不推荐三范式而推荐反三范式,建议不要创建外键,原因就是导致增删改的速度会变慢。
先在一个目录下创建一个空的文件夹,我这里命名为changgou
然后通过idea打开这个目录,在里面创建一个模块,选择mevan
然后finish,在pom文件中添加以下内容
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.1.RELEASEversion>
<relativePath/>
parent>
<properties>
<skipTests>trueskipTests>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Greenwich.SR1version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
创建changgou_gateway、changgou_service、changgou_service_api、
changgou_web工程,工程全部为pom工程,并将所有工程的src文件删除。
这里只有这几个都要打pom包,其余一律打jar包。
1.创建changgou_gateway
pom.xml如图
2.创建changgou_service
pom.xml如图
3.创建changgou_service_api
4.创建changgou_web
项目整体结构如图
到此我们微服务的结构就已经搭建完成
1.创建模块changgou_eureka
导入pom.xml相关依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
dependency>
dependencies>
这个eureka在装的时候也会莫名奇妙的出现包导不进去的情况,很恶心的。
在这里不行的话就加一个版本
然后在resources目录下创建application.yml
server:
port: 6868
eureka:
client:
register‐with‐eureka: false #是否将自己注册到eureka中
fetch‐registry: false #是否从eureka中获取信息
service‐url:
defaultZone: http://127.0.0.1:${server.port}/eureka/
spring:
application:
name: eureka
2.创建启动类
然后运行
看控制台告诉我们端口
然后打开浏览器访问这个端口:输入localhost:6868,页面大致就这个样子
这里也告诉我们没有任何服务注册
到此为止,我们的注册中心已经搭建了。
pom.xml依赖
创建公共模块chaunggou-common,pom.xml引入依赖。将’资源/common_entity’下
的相关资源导入工程
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.51version>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-openfeignartifactId>
dependency>
<dependency>
<groupId>com.github.wxpaygroupId>
<artifactId>wxpay-sdkartifactId>
<version>0.0.3version>
dependency>
<dependency>
<groupId>org.apache.httpcomponentsgroupId>
<artifactId>httpclientartifactId>
dependency>
dependencies>
这里还是那句话,如果springcloud启动依赖没有导进去,就添加
创建com.changgou.entity包 ,包下封装相关公共实体类。
package com.changgou.entity;
/**
* 返回结果实体类
*/
public class Result<T> {
private boolean flag;//是否成功
private Integer code;//返回码
private String message;//返回消息
private T data;//返回数据
public Result(boolean flag, Integer code, String message, Object
data) {
this.flag = flag;
this.code = code;
this.message = message;
this.data = (T)data;
}
public Result(boolean flag, Integer code, String message) {
this.flag = flag;
this.code = code;
this.message = message;
}
public Result() {
this.flag = true;
this.code = StatusCode.OK;
this.message = "执行成功";
}
//getter and setter..
}
package com.changgou.entity;
import java.util.List;
/**
* 分页结果类
*/
public class PageResult<T> {
private Long total;//总记录数
private List<T> rows;//记录
public PageResult(Long total, List<T> rows) {
this.total = total;
this.rows = rows;
}
public PageResult() {
}
//getter and setter ......
}
package com.changgou.entity;
/**
* 返回码
*/
public class StatusCode {
public static final int OK=20000;//成功
public static final int ERROR =20001;//失败
public static final int LOGINERROR =20002;//用户名或密码错误
public static final int ACCESSERROR =20003;//权限不足
public static final int REMOTEERROR =20004;//远程调用失败
public static final int REPERROR =20005;//重复操作
}