自学:springcloud小项目-后台以及数据库
环境搭建-数据库
数据库
环境搭建-后台
先搭建SpringCloud+mybatis+Docker+redis,mysql和nginx等项目完成,部署的时候再说
新建maven项目springcloud_project
pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wxm</groupId>
<artifactId>springcloud_project</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<druid.version>1.1.10</druid.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.13.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${
druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
新建springboot项目 flightcommon
pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wxm</groupId>
<artifactId>springcloud_project</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<druid.version>1.1.10</druid.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.13.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${
druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
entity
package com.wxm.flightcommon.entity;
import java.io.Serializable;
public class DataDict implements Serializable {
private Integer id;
private String datasource;
private String description;
public DataDict(Integer id, String datasource, String description) {
this.id = id;
this.datasource = datasource;
this.description = description;
}
public DataDict() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDatasource() {
return datasource;
}
public void setDatasource(String datasource) {
this.datasource = datasource;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
package com.wxm.flightcommon.entity;
import java.io.Serializable;
public class DataItem implements Serializable {
private Integer id;
private String datasource;
private String code;
private String val;
public DataItem(Integer id, String datasource, String code, String val) {
this.id = id;
this.datasource = datasource;
this.code = code;
this.val = val;
}
public DataItem() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDatasource() {
return datasource;
}
public void setDatasource(String datasource) {
this.datasource = datasource;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}
package com.wxm.flightcommon.entity;
public class Permission {
private String id;
private String name;
private String pid;
private String url;
private Integer isMenu;
public Permission(String id, String name, String pid, String url, Integer isMenu) {
this.id = id;
this.name = name;
this.pid = pid;
this.url = url;
this.isMenu = isMenu;
}
public Permission() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getIsMenu() {
return isMenu;
}
public void setIsMenu(Integer isMenu) {
this.isMenu = isMenu;
}
}
package com.wxm.flightcommon.entity;
public class Role {
private Integer rid;
private String roleName;
private String description;
public Role(Integer rid, String roleName, String description) {
this.rid = rid;
this.roleName = roleName;
this.description = description;
}
public Role() {
super();
}
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
package com.wxm.flightcommon.entity;
public class RolePermissionKey {
private Integer rid;
private String pid;
public RolePermissionKey(Integer rid, String pid) {
this.rid = rid;
this.pid = pid;
}
public RolePermissionKey() {
super();
}
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
}
package com.wxm.flightcommon.entity;
public class User {
private Integer uid;
private String username;
private String password;
private String salt;
private Integer useFlag;
public User(Integer uid, String username, String password, String salt, Integer useFlag) {
this.uid = uid;
this.username = username;
this.password = password;
this.salt = salt;
this.useFlag = useFlag;
}
public User() {
super();
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public Integer getUseFlag() {
return useFlag;
}
public void setUseFlag(Integer useFlag) {
this.useFlag = useFlag;
}
}
package com.wxm.flightcommon.entity;
public class UserRoleKey {
private Integer uid;
private Integer rid;
public UserRoleKey(Integer uid, Integer rid) {
this.uid = uid;
this.rid = rid;
}
public UserRoleKey() {
super();
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
}
result层
package com.wxm.flightcommon.result;
public class CodeMsg {
private int code;
private String msg;
//通用的错误码
public static CodeMsg SUCCESS = new CodeMsg(0, "success");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
//登录模块 5002XX
public static CodeMsg SESSION_ERROR = new CodeMsg(500210, "Session不存在或者已经失效");
public static CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "登录密码不能为空");
public static CodeMsg MOBILE_EMPTY = new CodeMsg(500212, "手机号不能为空");
public static CodeMsg MOBILE_ERROR = new CodeMsg(500213, "手机号格式错误");
public static CodeMsg MOBILE_NOT_EXIST = new CodeMsg(500214, "手机号不存在");
public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215, "密码错误");
//权限模块 5003XX
//数据字典 5004XX
public static CodeMsg ORDER_NOT_EXIST = new CodeMsg(500400, "订单不存在");
//秒杀模块 5005XX
public static CodeMsg MIAO_SHA_OVER = new CodeMsg(500500, "商品已经秒杀完毕");
public static CodeMsg REPEATE_MIAOSHA = new CodeMsg(500501, "不能重复秒杀");
private CodeMsg( ) {
}
private CodeMsg( int code,String msg ) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public CodeMsg fillArgs(Object... args) {
int code = this.code;
String message = String.format(this.msg, args);
return new CodeMsg(code, message);
}
@Override
public String toString() {
return "CodeMsg [code=" + code + ", msg=" + msg + "]";
}
}
package com.wxm.flightcommon.result;
public class Result<T> {
private int code;
private String msg;
private T data;
public Result() {
}
/**
* 成功时候的调用
* */
public static <T> Result<T> success(T data){
return new Result<T>(data);
}
/**
* 失败时候的调用
* */
public static <T> Result<T> error(CodeMsg codeMsg){
return new Result<T>(codeMsg);
}
private Result(T data) {
this.data = data;
}
private Result(int code, String msg) {
this.code = code;
this.msg = msg;
}
private Result(CodeMsg codeMsg) {
if(codeMsg != null) {
this.code = codeMsg.getCode();
this.msg = codeMsg.getMsg();
}
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
service层
package com.wxm.flightcommon.service;
import com.wxm.flightcommon.entity.DataDict;
import com.wxm.flightcommon.result.CodeMsg;
import com.wxm.flightcommon.result.Result;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author
* @site www.wxm.com
* @company
* @create 2020-03-11 20:02
*/
@Component
public class DataDictClientFallbackFactory implements FallbackFactory<DataDictClientService> {
@Override
public DataDictClientService create(Throwable throwable) {
return new DataDictClientService() {
@Override
public Result<List<DataDict>> list() {
return Result.error(CodeMsg.SERVER_ERROR);
}
};
}
}
package com.wxm.flightcommon.service;
import com.wxm.flightcommon.entity.DataDict;
import com.wxm.flightcommon.result.Result;
import com.wxm.flightcommon.entity.DataDict;
import com.wxm.flightcommon.result.Result;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* @author
* @company
* @create 2020-03-11 17:02
*/
@FeignClient(value="MICROSERVICE-FLIGHT",fallbackFactory = DataDictClientFallbackFactory.class)
public interface DataDictClientService {
// int deleteByPrimaryKey(Integer id);
//
// int insert(DataDict record);
//
// int insertSelective(DataDict record);
//
// DataDict selectByPrimaryKey(Integer id);
//
// int updateByPrimaryKeySelective(DataDict record);
//
// int updateByPrimaryKey(DataDict record);
@GetMapping(value="/dataDict/list")
public Result<List<DataDict>> list();
}
package com.wxm.flightcommon.service;
import com.wxm.flightcommon.entity.DataItem;
import com.wxm.flightcommon.result.CodeMsg;
import com.wxm.flightcommon.result.Result;
import feign.hystrix.FallbackFactory;
import java.util.List;
import java.util.Map;
/**
* @author
* @site www.wxm.com
* @company
* @create 2020-03-12 21:51
*/
public class DataItemClientFallBackFactory implements FallbackFactory<DataItemClientService> {
@Override
public DataItemClientService create(Throwable throwable) {
return new DataItemClientService() {
@Override
public Result<List<DataItem>> list(Map map) {
return Result.error