B station cloud E office Vue + SpringBoot proyecto de separación frontal y posterior: arquitectura de tres niveles MVC para construir un proyecto en segundo plano

Este proyecto proviene de la Oficina Cloud E de la Estación B. Las notas clasifican el proceso de construcción del proyecto y los puntos de conocimiento involucrados. Para aprender no basta con copiar y pegar el código, sino saber qué es y por qué es. Espero que mis notas puedan brindarle ideas y agradezco las correcciones de todos los socios.

Directorio de notas de estudio del front-end del proyecto

B station cloud E office Vue + SpringBoot proyecto de separación frontal y posterior: compilación del proyecto vue.js

B station cloud E office Vue + SpringBoot proyecto de separación de front-end y back-end: el front-end obtiene dinámicamente el directorio del menú

1. Introducción al proyecto

Este proyecto se basa en Vue + Spring Boot para crear un proyecto de separación de front-end y back-end. Este proyecto implementa un sistema de oficina en línea para gestionar los asuntos diarios de la oficina: aprobación de procesos diarios, noticias, avisos, anuncios, información de archivos, finanzas, personal, gastos, activos, administración, proyectos, oficina móvil, etc. Fácil de gestionar mediante software. En términos de tecnología, este proyecto adopta el modelo de desarrollo de separación de front-end y back-end más común, y utiliza Spring Boot, el marco de código abierto más popular en la industria y una comunidad muy activa, para construir el back-end. con el objetivo de realizar el sistema de oficina en línea E-office en la nube. Incluyendo gestión de puestos, gestión de títulos de trabajo, gestión de departamentos, gestión de empleados, gestión de salarios, chat en línea y otros módulos. El proyecto también utilizará componentes de terceros convencionales en la industria para ampliar su conocimiento y habilidades. El front-end solo necesita escribir el código del cliente de forma independiente, y el back-end solo necesita escribir el código del servidor de forma independiente para proporcionar la interfaz de datos. El marco del proyecto está diseñado de la siguiente manera:

2. Arquitectura técnica de back-end

Marco de desarrollo principal de back-end: SpringBoot+Spring MVC+MyBatisPlus.

  • Para construir el esqueleto de un proyecto desde cero, es mejor elegir tecnologías adecuadas y familiares que sean fáciles de expandir en el futuro y adecuadas para sistemas de microservicios. Por lo tanto, Springboot se utiliza generalmente como base de nuestro marco, que es inseparable.
  • Luego, para la capa de datos, solemos usar Mybatis, que es fácil de usar y de mantener. Sin embargo, las operaciones de una sola tabla son difíciles, especialmente al agregar o reducir campos, lo cual es engorroso, por lo que aquí recomiendo usar Mybatis Plus (https://mp.baomidou.com/), que nació para simplificar el desarrollo y solo necesita simples configuración, puede realizar rápidamente operaciones CRUD, ahorrando mucho tiempo.
  • Teniendo en cuenta que es posible que el proyecto necesite implementar varios servidores, nuestras sesiones y otra información deben compartirse en este momento. Redis es ahora el middleware de almacenamiento en caché principal y también es adecuado para nuestro proyecto.
  • Luego, debido a que los extremos frontal y posterior están separados, usamos jwt como nuestras credenciales de identidad de usuario. Utilice Spring Security para la autenticación de seguridad y la gestión de autoridades. Redis se usa para el almacenamiento en caché, RabbitMq se usa para enviar correos electrónicos, EasyPOI se usa para importar y exportar datos de empleados y WebSocket se usa para chatear en línea.

Marco de seguridad: seguridad de primavera

Ficha: JWT

Código de verificación gráfico: Kaptcha

Caché: redis

Importación y exportación de documentos: EasyPOI

Message Queuing: RabbitMQ realiza procesamiento asincrónico y envía correos electrónicos

Componente de correo: correo

Chat en vivo: WebSocket

Servidor de archivos: FastDFS

Base de datosMySQL+Redis

3. Arquitectura de tres niveles MVC

La capa Controlador llama al método de la capa Servicio, y la capa Servicio llama al método de la capa Dao, y los parámetros de la llamada se pasan a través de la capa Entidad. En general, esto hace que la lógica empresarial sea más clara y que escribir código sea más conveniente. De hecho, se trata de proporcionar una regla que le permita juntar el mismo tipo de código, formando así una jerarquía, para lograr el propósito de desacoplamiento jerárquico, reutilización y fácil prueba y mantenimiento. Nuestro proyecto adoptará esta arquitectura simple de tres niveles (DAO + Servicio + Controlador) durante mucho tiempo, y espero que todos puedan comprender poco a poco la división del trabajo entre estos tres módulos. Aquí lo resumo brevemente, primero tenga una impresión preliminar:

DAO se utiliza para la interacción directa con la base de datos, definiendo operaciones como agregar, eliminar, modificar, etc. El servicio es responsable de la lógica empresarial, y los códigos relacionados con las funciones generalmente se escriben aquí. Escriba y llame a varios métodos para operar con los datos obtenidos. por DAO. El controlador es responsable de la interacción de datos, es decir, recibir Los datos enviados por el front-end se procesan llamando al Servicio y se devuelven.

 En un proyecto específico, el proceso es el siguiente:

Controlador-->interfaz de servicio-->serviceImpl-->interfaz dao-->daoImpl-->mapper-->db

4. Preparación del proyecto - importar base de datos

1. Dirección de la base de datos:

Enlace: https://pan.baidu.com/s/1PMIJdX3xXvKa0UrAtvUZ1Q?pwd=ay2b
Código de extracción: ay2b

2. Preparación de la base de datos

Cree una nueva base de datos yeb, seleccione utf8mb4 como juego de caracteres de la base de datos e importe el script de la base de datos yeb.sql ubicado en la carpeta de la base de datos. La base de datos es MySQL, que se considera una opción relativamente común. Es excelente en términos de rendimiento y volumen. Por supuesto, existen algunas desventajas, pero la base de datos no es el foco de nuestra discusión aquí, siempre que pueda usarse. temporalmente. Crea una nueva base de datos a través de navicat:

Seleccione la tabla: "Haga clic derecho para ejecutar sql, el archivo sql se ha colocado en el disco de red de Baidu

Seleccione utf8 para la versión inferior y utf8mb4 para la versión superior

versión mysql5.6

PREDETERMINADO: conjunto de caracteres de la base de datos, establezca la codificación predeterminada de la base de datos en utf8

COLLATE: reglas de clasificación de bases de datos, la configuración predeterminada es utf8_general_ci

versión mysql8

PREDETERMINADO: conjunto de caracteres de la base de datos, establezca la codificación predeterminada de la base de datos en utf8mb4

COLLATE: reglas de clasificación de bases de datos, la configuración predeterminada es utf8mb4_0900_ai_ci

3. Directorio de tablas

La tabla generada después de ejecutar sql es la siguiente

 

4. IDEA instala lombok

5. Construya el proyecto

IDEA usa Spring Initializr para crear un proyecto SpringBoot. El proyecto back-end adopta la forma de agregación maven y el proyecto principal realiza la gestión de dependencias pom. El trabajo principal es el siguiente:

1) Cree un nuevo proyecto SpringBoot, como nuestro proyecto principal, que solo se usa para la gestión de dependencias pom de todos nuestros proyectos, de modo que la mayoría de los archivos y carpetas se puedan eliminar.

2) Modifique el archivo pom.xml, elimine la etiqueta de dependencias y la etiqueta de compilación y su contenido, y agregue el pom en la etiqueta de empaquetado

3) Cree un proyecto de módulo y use Maven para crear un subproyecto de módulo de inicio rápido yeb-server responsable de toda nuestra lógica de negocios.

4) Modifique el proyecto de módulo yeb-server recién creado, elimine la clase de aplicación y la clase AppTest generadas y luego agregue un nombre de paquete de servidor

5) Introduzca las coordenadas del proyecto principal en el pom.xml del subproyecto yeb-server y asocie el proyecto principal (proyecto principal)

6) Elimine la etiqueta build bulid y elimine las dependencias (porque copiamos directamente las dependencias requeridas)

7) Complete el directorio del proyecto del subproyecto, como recursos, directorios de cada capa, etc., y agregue el archivo de configuración application.yml. Tenga en cuenta que el contenido del archivo de configuración de copia es propenso a tener problemas

8) Agregue la clase de inicio YebApplication y agregue anotaciones de escaneo del mapeador

9) Coloque el archivo de configuración application.yml en el directorio de configuración

1. Cree el archivo pom del proyecto principal -yeb-back

Este proyecto adopta el proyecto agregado de Maven y habrá un proyecto principal: yeb-back. Hay subproyectos bajo el proyecto principal: lógica empresarial completa de la oficina electrónica en la nube - yeb-server, proyecto de buzón, proyecto de ingeniería inversa - yeb-generator.

El proyecto principal solo se utiliza para la gestión de dependencias de todo el proyecto pom. A excepción de pom.xml, no se necesitan ni eliminan otros archivos.

Modifique el archivo pom.xml, elimine la etiqueta de dependencias y la etiqueta de compilación y su contenido, y agregue el pom en la etiqueta de empaquetado 

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>yeb-server</module>
        <module>yeb-generator</module>
        <module>yeb-generator</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>yeb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>yeb</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
</project>

2. Modifique el archivo pom del subproyecto -yeb-server

Cree un proyecto de módulo y utilice Maven para crear un subproyecto de módulo de inicio rápido yeb-server responsable de toda nuestra lógica empresarial. Modifique el proyecto de módulo yeb-server recién creado, elimine la clase de aplicación y la clase AppTest generadas y luego agregue un nombre de paquete de servidor. Introduzca las coordenadas del proyecto principal en el pom.xml del subproyecto yeb-server y asocie el proyecto principal (proyecto principal). Elimine la etiqueta build bulid y elimine las dependencias (porque copiamos directamente las dependencias requeridas)

 En el archivo xml, agregue una dependencia en el proyecto principal. Y agregue las dependencias utilizadas en el proyecto, el código general:

<?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>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>yeb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <artifactId>yeb-server</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <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>
  </properties>

  <dependencies>
    <!--web依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- mybatis-plus -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.1</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- swagger2 依赖 -->
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.7.0</version>
    </dependency>
    <!-- Swagger第三方ui依赖 -->
    <dependency>
      <groupId>com.github.xiaoymin</groupId>
      <artifactId>swagger-bootstrap-ui</artifactId>
      <version>1.9.6</version>
    </dependency>
    <!-- security 权限控制依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- JWT 依赖 -->
    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.9.0</version>
    </dependency>
    <!-- google kaptcha 验证码 -->
    <dependency>
      <groupId>com.github.axet</groupId>
      <artifactId>kaptcha</artifactId>
      <version>0.0.9</version>
    </dependency>
    <!-- StringUtils.isBlank 用来做判断,是不是空,是不是有空格等等 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.11</version>
    </dependency>
    <!-- redis -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!-- commons-pool2 对象池依赖 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
    </dependency>
    <!-- easy poi 依赖,导入导出数据 -->
    <dependency>
      <groupId>cn.afterturn</groupId>
      <artifactId>easypoi-spring-boot-starter</artifactId>
      <version>4.2.0</version>
    </dependency>
    <!-- rabbitmq 消息队列 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <!-- websocket 实时聊天 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>

  </dependencies>

</project>

3. Agregue el archivo de configuración application.properties


server.port=8081
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/yeb?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root


spring.datasource.hikari.pool-name=DateHikariCP

spring.datasource.hikari.minimum-idle=5

spring.datasource.hikari.idle-timeout=180000

spring.datasource.hikari.maximum-pool-size=10

spring.datasource.hikari.auto-commit=true

spring.datasource.hikari.max-lifetime=1800000

spring.datasource.hikari.connection-timeout=30000

spring.datasource.hikari.connection-test-query=SELECT 1

# redis
#redis��ַ ������ϵ�
#spring.redis.host=127.0.0.1
spring.redis.host=192.168.110.130
spring.redis.port=6379

spring.redis.database=1
spring.redis.timeout=10000s

#spring.redis.password=root

spring.redis.lettuce.pool.max-active= 1024

spring.redis.lettuce.pool.max-wait= 10000ms

spring.redis.lettuce.pool.max-idle=200

spring.redis.lettuce.pool.min-idle=5

#Mybatis-plus����

mybatis-plus.mapper-locations=classpath*:/mapper/*Mapper.xml

mybatis-plus.type-aliases-package=com.example.server.pojo

#mybatis-plus.configuration.map-underscore-to-camel-case=false

## Mybatis SQL
logging.level.com.example.server.mapper=debug

jwt.tokenHeader=Authorization
jwt.secret=yeb-secret
jwt.expiration=604800
jwt.tokenHead=Bearer

# \u6D88\u606F\u961F\u5217
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.host=172.16.100.4
spring.rabbitmq.port=5672

spring.rabbitmq.publisher-confirm-type=correlated

spring.rabbitmq.publisher-returns=true

 4. Agregue la clase de inicio YebApplication

package com.example.server;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.server.mapper")
public class YebApplication {
    public static void main(String[] args){
        SpringApplication.run(YebApplication.class,args);
    }
}

5. Autogenerador de ingeniería inversa

1) ¿Qué es el AutoGenerador?

AutoGenerator es el generador de código de MyBatis-Plus. A través de AutoGenerator, puede generar rápidamente el código de Pojo, Mapper, Mapper XML, Service, Controller y otros módulos.

2) ¿Qué puede hacer AutoGenerator?

Se puede evitar mucha duplicación de trabajo. Por ejemplo: 1. Antes de desarrollar la función, se creará la clase y el atributo Pojo correspondiente (private int age;) de acuerdo con la tabla y el campo. El nombre de la clase pojo debe corresponder al nombre de la tabla y los atributos deben corresponder a los campos de la tabla. Para una sola tabla, es casi una herramienta completa, lo que mejora enormemente la eficiencia del desarrollo. Preste más atención a la realización de la lógica empresarial.

3) ¿Cómo usarlo?

En nuestro proyecto, utilice AutoGenerator de MyBatis para generar automáticamente el asignador, el servicio y el controlador. El uso del generador de código de ingeniería inversa AutoGenerator que viene con MyBatisPlus puede generar rápidamente códigos para varios módulos como Entity, Mapper, Mapper XML, Service y Controller, lo que mejora enormemente la eficiencia del desarrollo.

4) La estructura de directorios del proyecto .yeb-generator

  1. Utilice el inicio rápido de maven para crear un nuevo subproyecto generador de código de ingeniería inversa yeb-generator , que se utiliza especialmente para la generación de cada código de módulo. Copie el código de capa del asignador|servicio|controlador generado automáticamente en la ubicación correspondiente en yeb-server.
  2. Elimine el contenido no utilizado en el subproyecto pom.xml del generador yeb recién creado, especifique las coordenadas del proyecto principal, la copia depende de él y cree un nuevo generador de nombres de paquete.

5) Archivo de clase CodeGenerator

Ejecute el método principal en la clase que escribimos y luego ingrese nuestra tabla a continuación. Si la tabla a continuación (es decir, la tabla correspondiente en la base de datos) generará automáticamente el archivo asignador correspondiente.

Ejecute el archivo anterior y luego ingrese el nombre de la tabla en el cuadro de control:

 Ingrese el nombre de la tabla, separado por varias comas en inglés:
 t_admin, t_admin_role, t_appraise, t_department, t_employee, t_employee_ec, t_employee_remove, t_employee_train, t_joblevel, t_mail_log, t_menu, t_menu_role, t_nation, t_oplog, t _estado_política, posición_t, rol_t, salario_t, ajuste_salario_t , t_sys_msg ,t_sys_msg_content

código:

package com.example.generator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.apache.commons.lang3.StringUtils;

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.isNotEmpty(ipt)){
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的"+tip+"!");

    }
    public static void main(String[] args) {

        AutoGenerator autoGenerator = new AutoGenerator();
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("root");
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/yeb?useUnicode=true&characterEncoding=UTF-8");
        autoGenerator.setDataSource(dataSourceConfig);
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOpen(true); // 代码生成后打开目录
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
        globalConfig.setAuthor("Zeng");
//        globalConfig.setIdType(IdType.ASSIGN_ID);// id 主键策略
//        globalConfig.setDateType(DateType.ONLY_DATE); // 定义生成的实体类中日期类型
        globalConfig.setSwagger2(true);// 开启Swaggers模式
        globalConfig.setServiceName("%sService");
        autoGenerator.setGlobalConfig(globalConfig);
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.example");
        packageConfig.setEntity("pojo");
        packageConfig.setMapper("mapper");
        packageConfig.setController("controller");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        autoGenerator.setPackageInfo(packageConfig);
        StrategyConfig strategyConfig = new StrategyConfig();

//        strategyConfig.setInclude("t_admin"); // 生成单表写法
        // strategyConfig.setInclude("user","product"); // 生成多张表写法。生成所有表,不用配置
        strategyConfig.setTablePrefix("t"+"_"); // 去表前缀 t,根据实际情况填写

        strategyConfig.setEntityLombokModel(true);
        //数据库表映射到实体的命名策略
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setInclude(scanner("表名,多个英文逗号分割").split(","));
//        List<TableFill> list = new ArrayList<>();
//        TableFill tableFill1 = new TableFill("create_time", FieldFill.INSERT);
//        TableFill tableFill2 = new TableFill("update_time",FieldFill.INSERT_UPDATE);
//        list.add(tableFill1);
//        list.add(tableFill2);

//        strategyConfig.setTableFillList(list);
        autoGenerator.setStrategy(strategyConfig);

        autoGenerator.execute();
    }
}

6. archivo pom del proyecto yeb-generator

<?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">
    <parent>
        <artifactId>yeb</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>yeb-generator</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <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>
    </properties>

    <dependencies>
        <!--web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!-- mybatis-plus 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>

        <!-- mybatis-plus 代码生成器默认模板 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

        <!-- mybatis-plus 代码生成器模板引擎 -->
        <!--        <dependency>-->
        <!--            <groupId>org.freemarker</groupId>-->
        <!--            <artifactId>freemarker</artifactId>-->
        <!--            <version>2.3.30</version>-->
        <!--        </dependency>-->
    </dependencies>

</project>

7. Copie el mapper\service\controller generado al directorio yeb-server

1) En el subproyecto yeb-generator, después de generar las clases de cada módulo, cópielas al subproyecto yeb-server

2) Después de copiar al subproyecto yeb-server, elimine las clases de cada módulo generado en el subproyecto yeb-generator, porque se informarán en rojo

3) Agregue las dependencias requeridas para resolver el problema de informar en rojo, como agregar dependencias swagger2

4) Archivo de ingeniería inversa CodeGenerator. Debe configurar el paquete que desea generar, la clase de módulo correspondiente en este archivo y hay comentarios específicos en él.

directorio del servidor yeb

 

El directorio de la capa yeb-server/controller es como se muestra en la siguiente figura, cada archivo es generado por CodeGenerator de acuerdo con el nombre de la tabla

La construcción del proyecto está completa y comenzará el combate real del proyecto.

Supongo que te gusta

Origin blog.csdn.net/qq_36384657/article/details/124676242
Recomendado
Clasificación