diff --git a/vueadmin-java/pom.xml b/vueadmin-java/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81bcda4f8a2632a6b37707254e6914d5eb96c6b9
--- /dev/null
+++ b/vueadmin-java/pom.xml
@@ -0,0 +1,61 @@
+
+
+ 4.0.0
+
+ com.snails.cafe
+ vueadmin-java
+ 1.0-SNAPSHOT
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.4.0
+
+
+
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.1
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.4.1
+
+
+ org.freemarker
+ freemarker
+ 2.3.30
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+
\ No newline at end of file
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/Application.java b/vueadmin-java/src/main/java/com/snails/cafe/Application.java
new file mode 100644
index 0000000000000000000000000000000000000000..348557b118916badc6fa3675fc931e9515851c79
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/Application.java
@@ -0,0 +1,16 @@
+package com.snails.cafe;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 包名: com.snails.cafe
+ * 时间:2021/5/2 0002
+ * 项目名称:vueadmin-java
+ */
+@SpringBootApplication
+public class Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/CodeGenerator.java b/vueadmin-java/src/main/java/com/snails/cafe/CodeGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..817474d21b3c8766a9fce782729520da3523a24d
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/CodeGenerator.java
@@ -0,0 +1,141 @@
+package com.snails.cafe;
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
+public class CodeGenerator {
+
+ /**
+ *
+ * 读取控制台内容
+ *
+ */
+ public static String scanner(String tip) {
+ Scanner scanner = new Scanner(System.in);
+ StringBuilder help = new StringBuilder();
+ help.append("请输入" + tip + ":");
+ System.out.println(help.toString());
+ if (scanner.hasNext()) {
+ String ipt = scanner.next();
+ if (StringUtils.isNotBlank(ipt)) {
+ return ipt;
+ }
+ }
+ throw new MybatisPlusException("请输入正确的" + tip + "!");
+ }
+
+ public static void main(String[] args) {
+ // 代码生成器
+ AutoGenerator mpg = new AutoGenerator();
+
+ // 全局配置
+ GlobalConfig gc = new GlobalConfig();
+ String projectPath = System.getProperty("user.dir");
+ gc.setOutputDir(projectPath + "/src/main/java");
+ gc.setAuthor("项目名称:git-command-exercise ");
+ gc.setOpen(false);
+ // gc.setSwagger2(true); 实体属性 Swagger2 注解
+ gc.setServiceName("%sService");
+ mpg.setGlobalConfig(gc);
+
+ // 数据源配置
+ DataSourceConfig dsc = new DataSourceConfig();
+ dsc.setUrl("jdbc:mysql://localhost:3306/vueadmin?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
+ // dsc.setSchemaName("public");
+ dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+ dsc.setUsername("root");
+ dsc.setPassword("root");
+ mpg.setDataSource(dsc);
+
+ // 包配置
+ PackageConfig pc = new PackageConfig();
+// pc.setModuleName(scanner("模块名"));
+ pc.setParent("com.snails.cafe");
+ mpg.setPackageInfo(pc);
+
+ // 自定义配置
+ InjectionConfig cfg = new InjectionConfig() {
+ @Override
+ public void initMap() {
+ // to do nothing
+ }
+ };
+
+ // 如果模板引擎是 freemarker
+ String templatePath = "/templates/mapper.xml.ftl";
+ // 如果模板引擎是 velocity
+// String templatePath = "/templates/mapper.xml.vm";
+
+ // 自定义输出配置
+ List focList = new ArrayList<>();
+ // 自定义配置会被优先输出
+ focList.add(new FileOutConfig(templatePath) {
+ @Override
+ public String outputFile(TableInfo tableInfo) {
+ // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+ return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+ + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+ }
+ });
+ /*
+ cfg.setFileCreate(new IFileCreate() {
+ @Override
+ public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+ // 判断自定义文件夹是否需要创建
+ checkDir("调用默认方法创建的目录,自定义目录用");
+ if (fileType == FileType.MAPPER) {
+ // 已经生成 mapper 文件判断存在,不想重新生成返回 false
+ return !new File(filePath).exists();
+ }
+ // 允许生成模板文件
+ return true;
+ }
+ });
+ */
+ cfg.setFileOutConfigList(focList);
+ mpg.setCfg(cfg);
+
+ // 配置模板
+ TemplateConfig templateConfig = new TemplateConfig();
+
+ // 配置自定义输出模板
+ //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
+ // templateConfig.setEntity("templates/entity2.java");
+ // templateConfig.setService();
+ // templateConfig.setController();
+
+ templateConfig.setXml(null);
+ mpg.setTemplate(templateConfig);
+
+ // 策略配置
+ StrategyConfig strategy = new StrategyConfig();
+ strategy.setNaming(NamingStrategy.underline_to_camel);
+ strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+ strategy.setSuperEntityClass("BaseEntity");
+ strategy.setEntityLombokModel(true);
+ strategy.setRestControllerStyle(true);
+ // 公共父类
+ strategy.setSuperControllerClass("BaseController");
+ // 写于父类中的公共字段
+ strategy.setSuperEntityColumns("id", "created", "updated", "statu");
+ strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
+ strategy.setControllerMappingHyphenStyle(true);
+// strategy.setTablePrefix("sys_");//动态调整
+ mpg.setStrategy(strategy);
+ mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+ mpg.execute();
+ }
+
+}
\ No newline at end of file
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/config/MybatisPlusConfig.java b/vueadmin-java/src/main/java/com/snails/cafe/config/MybatisPlusConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf77dab1dd63c0eced8952423906d0f8a4cf9c43
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/config/MybatisPlusConfig.java
@@ -0,0 +1,38 @@
+package com.snails.cafe.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 包名: com.snails.cafe.config
+ * 时间:2021/5/2 0002
+ * 项目名称:vueadmin-java
+ */
+@Configuration
+@MapperScan("com.snails.cafe.mapper")
+public class MybatisPlusConfig {
+ /*
+ * 新的分页插件,一级缓存和二级缓存遵循mybatis的规则
+ * 需要设置 MybatisConfiguration#useDeprecatedExecutor = false
+ * 避免缓存出现问题(该属性会在旧插件移除后一同移除)
+ * */
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ // 防止全表更新和删除
+ interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
+ return interceptor;
+ }
+ @Bean
+ public ConfigurationCustomizer configurationCustomizer(){
+ return configuration -> configuration.setUseDeprecatedExecutor(false);
+ }
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/BaseController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/BaseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..387e417d12a2d974d15622358375c7cebfc5b20e
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/BaseController.java
@@ -0,0 +1,15 @@
+package com.snails.cafe.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 包名: com.snails.cafe.controller
+ * 时间:2021/5/2 0002
+ * 项目名称:vueadmin-java
+ */
+public class BaseController {
+ @Autowired
+ HttpServletRequest req;
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/SysMenuController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysMenuController.java
new file mode 100644
index 0000000000000000000000000000000000000000..9affe70dc39ed789b01f7928ffa2b027b4881903
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysMenuController.java
@@ -0,0 +1,21 @@
+package com.snails.cafe.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@RestController
+@RequestMapping("/sys-menu")
+public class SysMenuController extends BaseController {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/SysRoleController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysRoleController.java
new file mode 100644
index 0000000000000000000000000000000000000000..221de910287d4524d985a90362fb636f3ab2ff0b
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysRoleController.java
@@ -0,0 +1,21 @@
+package com.snails.cafe.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@RestController
+@RequestMapping("/sys-role")
+public class SysRoleController extends BaseController {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/SysRoleMenuController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysRoleMenuController.java
new file mode 100644
index 0000000000000000000000000000000000000000..41434e245b305b04a886014522cd422aef288189
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysRoleMenuController.java
@@ -0,0 +1,21 @@
+package com.snails.cafe.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@RestController
+@RequestMapping("/sys-role-menu")
+public class SysRoleMenuController extends BaseController {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/SysUserController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysUserController.java
new file mode 100644
index 0000000000000000000000000000000000000000..67beed2594190f6bae3645e604403bf7cf7bf642
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysUserController.java
@@ -0,0 +1,21 @@
+package com.snails.cafe.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@RestController
+@RequestMapping("/sys-user")
+public class SysUserController extends BaseController {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/SysUserRoleController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysUserRoleController.java
new file mode 100644
index 0000000000000000000000000000000000000000..12c581681f82313463922232874023af8065cb8b
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/SysUserRoleController.java
@@ -0,0 +1,21 @@
+package com.snails.cafe.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@RestController
+@RequestMapping("/sys-user-role")
+public class SysUserRoleController extends BaseController {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/controller/TestController.java b/vueadmin-java/src/main/java/com/snails/cafe/controller/TestController.java
new file mode 100644
index 0000000000000000000000000000000000000000..809b2013effa2b6f0ee079bbe25b76eff4db788a
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/controller/TestController.java
@@ -0,0 +1,23 @@
+package com.snails.cafe.controller;
+
+import com.snails.cafe.service.SysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 包名: com.snails.cafe.controller
+ * 时间:2021/5/2 0002
+ * 项目名称:vueadmin-java
+ */
+@RestController
+public class TestController {
+ @Autowired
+ private SysUserService userService;
+
+ @GetMapping("/test")
+ public Object test(){
+ return userService.list();
+ }
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/entity/BaseEntity.java b/vueadmin-java/src/main/java/com/snails/cafe/entity/BaseEntity.java
new file mode 100644
index 0000000000000000000000000000000000000000..2d84235f8cbafef21fb291c23aaf39dec40e02e7
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/entity/BaseEntity.java
@@ -0,0 +1,22 @@
+package com.snails.cafe.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 包名: com.snails.cafe.entity
+ * 时间:2021/5/2 0002
+ * 项目名称:vueadmin-java
+ */
+@Data
+public class BaseEntity implements Serializable {
+ private LocalDateTime created;
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ private Integer statu;
+ private LocalDateTime updated;
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/entity/SysMenu.java b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysMenu.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c20b8f3075f1db70fc6c2a974c671701463c50b
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysMenu.java
@@ -0,0 +1,58 @@
+package com.snails.cafe.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysMenu extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 父菜单ID,一级菜单为0
+ */
+ private Long parentId;
+
+ private String name;
+
+ /**
+ * 菜单URL
+ */
+ private String path;
+
+ /**
+ * 授权(多个用逗号分隔,如:user:list,user:create)
+ */
+ private String perms;
+
+ private String component;
+
+ /**
+ * 类型 0:目录 1:菜单 2:按钮
+ */
+ private Integer type;
+
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
+ * 排序
+ */
+ @TableField("orderNum")
+ private Integer ordernum;
+
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/entity/SysRole.java b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysRole.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c2506604797c612f22abe29316bbc68f802739b
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysRole.java
@@ -0,0 +1,30 @@
+package com.snails.cafe.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysRole extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ private String name;
+
+ private String code;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/entity/SysRoleMenu.java b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysRoleMenu.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf989f74e53b99590e6657e641cbdea6a75a156e
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysRoleMenu.java
@@ -0,0 +1,25 @@
+package com.snails.cafe.entity;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Data
+public class SysRoleMenu {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long roleId;
+
+ private Long menuId;
+
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/entity/SysUser.java b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..cde60454bd486437a7e26e7d8366dd7f6e540ed3
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysUser.java
@@ -0,0 +1,34 @@
+package com.snails.cafe.entity;
+
+import java.time.LocalDateTime;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysUser extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ private String username;
+
+ private String password;
+
+ private String avatar;
+
+ private String email;
+
+ private String city;
+
+ private LocalDateTime lastLogin;
+
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/entity/SysUserRole.java b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysUserRole.java
new file mode 100644
index 0000000000000000000000000000000000000000..525ce7c4cbb1aa3a5df8bd94fa48b653ec3a82c8
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/entity/SysUserRole.java
@@ -0,0 +1,26 @@
+package com.snails.cafe.entity;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysUserRole extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long userId;
+
+ private Long roleId;
+
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysMenuMapper.java b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysMenuMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b363c0759ef907f020f07286741115c6af0da52
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysMenuMapper.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.mapper;
+
+import com.snails.cafe.entity.SysMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysMenuMapper extends BaseMapper {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysRoleMapper.java b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysRoleMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..337a3759d638dcffa98f042fa1cfcbdf2a3d4000
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysRoleMapper.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.mapper;
+
+import com.snails.cafe.entity.SysRole;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysRoleMapper extends BaseMapper {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysRoleMenuMapper.java b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysRoleMenuMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca2c29505d452a5f16425b78c5db0828316d0227
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysRoleMenuMapper.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.mapper;
+
+import com.snails.cafe.entity.SysRoleMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysRoleMenuMapper extends BaseMapper {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysUserMapper.java b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysUserMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..d75595f03909fd5f7d9a8af6bffa7b3f52f25c4d
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysUserMapper.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.mapper;
+
+import com.snails.cafe.entity.SysUser;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysUserMapper extends BaseMapper {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysUserRoleMapper.java b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysUserRoleMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..a086ece00aa105d2f41e3d333b8ec885821e25e7
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/mapper/SysUserRoleMapper.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.mapper;
+
+import com.snails.cafe.entity.SysUserRole;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysUserRoleMapper extends BaseMapper {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/SysMenuService.java b/vueadmin-java/src/main/java/com/snails/cafe/service/SysMenuService.java
new file mode 100644
index 0000000000000000000000000000000000000000..304143dc1e827496b2688af0819aaf643b72eb6a
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/SysMenuService.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.service;
+
+import com.snails.cafe.entity.SysMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysMenuService extends IService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/SysRoleMenuService.java b/vueadmin-java/src/main/java/com/snails/cafe/service/SysRoleMenuService.java
new file mode 100644
index 0000000000000000000000000000000000000000..bcdba5f0ee2a24fc225409f0510c3286873672cf
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/SysRoleMenuService.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.service;
+
+import com.snails.cafe.entity.SysRoleMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysRoleMenuService extends IService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/SysRoleService.java b/vueadmin-java/src/main/java/com/snails/cafe/service/SysRoleService.java
new file mode 100644
index 0000000000000000000000000000000000000000..1d67a66358d1be568ec80767561e1e248a1cf4e5
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/SysRoleService.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.service;
+
+import com.snails.cafe.entity.SysRole;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysRoleService extends IService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/SysUserRoleService.java b/vueadmin-java/src/main/java/com/snails/cafe/service/SysUserRoleService.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d5b52c56c052b89ce198c67f77ea19eae8bbcc8
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/SysUserRoleService.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.service;
+
+import com.snails.cafe.entity.SysUserRole;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysUserRoleService extends IService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/SysUserService.java b/vueadmin-java/src/main/java/com/snails/cafe/service/SysUserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..c989aad6a867b355035063e3f3542071fe6d8640
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/SysUserService.java
@@ -0,0 +1,16 @@
+package com.snails.cafe.service;
+
+import com.snails.cafe.entity.SysUser;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+public interface SysUserService extends IService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysMenuServiceImpl.java b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysMenuServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..008a31be414473e300d1000719dfe8586e4aa6c6
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysMenuServiceImpl.java
@@ -0,0 +1,20 @@
+package com.snails.cafe.service.impl;
+
+import com.snails.cafe.entity.SysMenu;
+import com.snails.cafe.mapper.SysMenuMapper;
+import com.snails.cafe.service.SysMenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Service
+public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysRoleMenuServiceImpl.java b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysRoleMenuServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2b7bb5b10e8ea780002dd19cd8bb8f698a435e1
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysRoleMenuServiceImpl.java
@@ -0,0 +1,20 @@
+package com.snails.cafe.service.impl;
+
+import com.snails.cafe.entity.SysRoleMenu;
+import com.snails.cafe.mapper.SysRoleMenuMapper;
+import com.snails.cafe.service.SysRoleMenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Service
+public class SysRoleMenuServiceImpl extends ServiceImpl implements SysRoleMenuService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysRoleServiceImpl.java b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysRoleServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ae058c80824b0d094d4a8b1a16f909d8f83e60eb
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysRoleServiceImpl.java
@@ -0,0 +1,20 @@
+package com.snails.cafe.service.impl;
+
+import com.snails.cafe.entity.SysRole;
+import com.snails.cafe.mapper.SysRoleMapper;
+import com.snails.cafe.service.SysRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Service
+public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysUserRoleServiceImpl.java b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysUserRoleServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..433d82e0536b78811e4c9d4ee9a12c995ef9f221
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysUserRoleServiceImpl.java
@@ -0,0 +1,20 @@
+package com.snails.cafe.service.impl;
+
+import com.snails.cafe.entity.SysUserRole;
+import com.snails.cafe.mapper.SysUserRoleMapper;
+import com.snails.cafe.service.SysUserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Service
+public class SysUserRoleServiceImpl extends ServiceImpl implements SysUserRoleService {
+
+}
diff --git a/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysUserServiceImpl.java b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysUserServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b80b758f66e0688a82b47d84aa508fbda2830e83
--- /dev/null
+++ b/vueadmin-java/src/main/java/com/snails/cafe/service/impl/SysUserServiceImpl.java
@@ -0,0 +1,20 @@
+package com.snails.cafe.service.impl;
+
+import com.snails.cafe.entity.SysUser;
+import com.snails.cafe.mapper.SysUserMapper;
+import com.snails.cafe.service.SysUserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 项目名称:git-command-exercise
+ * @since 2021-05-02
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl implements SysUserService {
+
+}
diff --git a/vueadmin-java/src/main/resources/application.yml b/vueadmin-java/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6fddcd3ec5cbb92ccc08879df6ec6536381cf969
--- /dev/null
+++ b/vueadmin-java/src/main/resources/application.yml
@@ -0,0 +1,11 @@
+server:
+ port: 8080
+# 数据源配置
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/vueadmin?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+ username: root
+ password: root
+mybatis-plus:
+ mapper-locations: classpath*:/mapper/**Mapper.xml
diff --git a/vueadmin-java/src/main/resources/mapper/SysMenuMapper.xml b/vueadmin-java/src/main/resources/mapper/SysMenuMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..19a4e237572c115917110e5dccfa97f2f41ef47f
--- /dev/null
+++ b/vueadmin-java/src/main/resources/mapper/SysMenuMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vueadmin-java/src/main/resources/mapper/SysRoleMapper.xml b/vueadmin-java/src/main/resources/mapper/SysRoleMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3fd44545e9c8af9f26d41b1c0fb6e04366f66b25
--- /dev/null
+++ b/vueadmin-java/src/main/resources/mapper/SysRoleMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vueadmin-java/src/main/resources/mapper/SysRoleMenuMapper.xml b/vueadmin-java/src/main/resources/mapper/SysRoleMenuMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..600be5ee3bce3e5229891e06a9af8ebbfa0cd5de
--- /dev/null
+++ b/vueadmin-java/src/main/resources/mapper/SysRoleMenuMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vueadmin-java/src/main/resources/mapper/SysUserMapper.xml b/vueadmin-java/src/main/resources/mapper/SysUserMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d07f5311346372a96b134739be087a82ec70239
--- /dev/null
+++ b/vueadmin-java/src/main/resources/mapper/SysUserMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vueadmin-java/src/main/resources/mapper/SysUserRoleMapper.xml b/vueadmin-java/src/main/resources/mapper/SysUserRoleMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c043705dd2a4b3de8eb70f169e44fbe03b434aa
--- /dev/null
+++ b/vueadmin-java/src/main/resources/mapper/SysUserRoleMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+