Projet de séparation front-end et back-end Vue+SpringBoot de bureau E Cloud de station B - Architecture MVC à trois niveaux pour créer un projet d'arrière-plan

Ce projet provient du bureau Cloud E de la station B. Les notes trient le processus de construction du projet et les points de connaissances impliqués. Pour apprendre, il ne suffit pas de copier-coller le code, mais de savoir de quoi il s’agit et pourquoi il l’est. J'espère que mes notes pourront vous donner des idées et j'apprécie les corrections de tous les partenaires.

Répertoire des notes d'étude préliminaire du projet

Projet de séparation front-end et back-end Vue+SpringBoot de la station B cloud E office - construire le projet vue.js

B Station Cloud E Office Vue+SpringBoot Projet de séparation front-end et back-end - le front-end obtient dynamiquement le répertoire de menus

1. Présentation du projet

Ce projet est basé sur Vue+Spring Boot pour construire un projet de séparation front-end et back-end. Ce projet met en œuvre un système de bureau en ligne pour gérer les affaires quotidiennes du bureau : approbation quotidienne des processus, actualités, avis, annonces, informations sur les dossiers, finances, personnel, dépenses, actifs, administration, projets, bureau mobile, etc. Facile à gérer via un logiciel. En termes de technologie, ce projet adopte le modèle de développement de séparation front-end et back-end le plus courant, et utilise Spring Boot, le framework open source le plus populaire de l'industrie et une communauté très active, pour construire le back-end, visant à réaliser le système de bureau en ligne cloud E-office. Y compris la gestion des postes, la gestion des titres, la gestion des départements, la gestion des employés, la gestion des salaires, le chat en ligne et d'autres modules. Le projet utilisera également des composants tiers courants du secteur pour élargir votre bassin de connaissances et de compétences. Le front-end n'a besoin que d'écrire indépendamment le code client, et le back-end n'a besoin que d'écrire indépendamment le code serveur pour fournir l'interface de données.Le cadre du projet est conçu comme suit :

2. Architecture technique back-end

Cadre de développement grand public back-end : SpringBoot+Spring MVC+MyBatisPlus.

  • Pour construire un squelette de projet à partir de zéro, il est préférable de choisir des technologies appropriées et familières, faciles à développer à l'avenir et adaptées aux systèmes de microservices. Par conséquent, Springboot est généralement utilisé comme base de notre framework, qui en est indissociable.
  • Ensuite pour la couche données, nous utilisons souvent Mybatis, qui est simple à utiliser et à maintenir. Cependant, les opérations sur une seule table sont difficiles, en particulier lors de l'ajout ou de la réduction de champs, ce qui est fastidieux, je recommande donc ici d'utiliser Mybatis Plus (https://mp.baomidou.com/), qui est né pour simplifier le développement et n'a besoin que de simples configuration , vous pouvez effectuer rapidement des opérations CRUD, économisant ainsi beaucoup de temps.
  • Étant donné que le projet devra peut-être déployer plusieurs serveurs, nos sessions et autres informations doivent être partagées à ce stade. Redis est désormais le middleware de mise en cache principal et il convient également à notre projet.
  • Ensuite, comme les front-ends et les back-ends sont séparés, nous utilisons jwt comme informations d'identification d'identité utilisateur. Utilisez Spring Security pour l'authentification de sécurité et la gestion des autorités. Redis est utilisé pour la mise en cache, RabbitMq est utilisé pour l'envoi d'e-mails, EasyPOI est utilisé pour importer et exporter les données des employés et WebSocket est utilisé pour le chat en ligne.

Cadre de sécurité : Spring Security

Jeton : JWT

Code de vérification graphique : Kaptcha

Cache : redis

Import et export de documents : EasyPOI

Message Queuing : RabbitMQ effectue un traitement asynchrone et envoie des e-mails

Composant de messagerie : Mail

Chat en direct : WebSocket

Serveur de fichiers : FastDFS

Base de donnéesMySQL+Redis

3. Architecture MVC à trois niveaux

La couche Contrôleur appelle la méthode de la couche Service, et la couche Service appelle la méthode de la couche Dao, et les paramètres de l'appel sont transmis via la couche Entité. En général, cela rend la logique métier plus claire et l’écriture du code plus pratique. En fait, il s'agit de fournir une règle qui vous permet de rassembler le même type de code, formant ainsi une hiérarchie, de manière à atteindre l'objectif de découplage hiérarchique, de réutilisation et de test et de maintenance faciles. Notre projet adoptera pendant longtemps cette architecture simple à trois niveaux (DAO + Service + Contrôleur), et j'espère que tout le monde pourra lentement comprendre la division du travail entre ces trois modules. Ici, je résume brièvement, j'ai d'abord une première impression :

DAO est utilisé pour interagir directement avec la base de données, définissant des opérations telles que l'ajout, la suppression, la modification, etc. Le service est responsable de la logique métier, et les codes liés aux fonctions sont généralement écrits ici. Écrivez et appelez diverses méthodes pour opérer sur les données obtenues. par DAO. Le contrôleur est responsable de l'interaction des données, c'est-à-dire de la réception. Les données envoyées par le front-end sont traitées en appelant le service et renvoyées

 Dans un projet spécifique, le processus est le suivant :

Contrôleur -> interface de service -> serviceImpl -> interface dao -> daoImpl -> mapper -> db

4. Préparation du projet - importation de la base de données

1. Adresse de la base de données :

Lien : https://pan.baidu.com/s/1PMIJdX3xXvKa0UrAtvUZ1Q?pwd=ay2b
Code d'extraction : ay2b

2. Préparation de la base de données

Créez une nouvelle base de données yeb, sélectionnez utf8mb4 comme jeu de caractères de la base de données et importez le script de base de données yeb.sql placé dans le dossier de la base de données. La base de données est MySQL, qui est considérée comme un choix relativement courant. Elle est excellente en termes de performances et de volume. Bien sûr, elle présente certains inconvénients, mais la base de données n'est pas au centre de notre discussion ici, tant qu'elle peut être utilisée. temporairement. Créez une nouvelle base de données via Navicat :

Sélectionnez le tableau - "Clic droit pour exécuter SQL, le fichier SQL a été placé sur le disque réseau Baidu

Sélectionnez utf8 pour la version inférieure et utf8mb4 pour la version supérieure

version mysql5.6

DEFAULT : jeu de caractères de la base de données, définit le codage par défaut de la base de données sur utf8

COLLATE : règles de classement de la base de données, le paramètre par défaut est utf8_general_ci

version mysql8

DEFAULT : jeu de caractères de la base de données, définissez le codage par défaut de la base de données sur utf8mb4

COLLATE : règles de classement de la base de données, le paramètre par défaut est utf8mb4_0900_ai_ci

3. Répertoire des tableaux

Le tableau généré après l'exécution de SQL est le suivant

 

4. IDÉE installer Lombok

5. Construisez le projet

IDEA utilise Spring Initializr pour créer un projet SpringBoot. Le projet back-end adopte la forme d'agrégation maven et le projet parent gère les dépendances pom. Les principaux travaux sont les suivants :

1) Créez un nouveau projet SpringBoot, en tant que projet parent, qui est uniquement utilisé pour la gestion des dépendances pom de tous nos projets, afin que la plupart des fichiers et dossiers puissent être supprimés.

2) Modifiez le fichier pom.xml, supprimez la balise dependencies ainsi que la balise build et son contenu, et ajoutez le pom dans la balise packaging

3) Créez un projet de module et utilisez Maven pour créer un sous-projet de module de démarrage rapide, yeb-server responsable de l'ensemble de notre logique métier.

4) Modifiez le projet de module nouvellement créé yeb-server, supprimez la classe App et la classe AppTest générées, puis ajoutez un nom de package de serveur.

5) Introduire les coordonnées du projet parent dans le pom.xml du sous-projet yeb-server, et associer le projet parent (projet principal)

6) Supprimez la balise build bulid et supprimez les dépendances (car nous copions directement les dépendances requises dans)

7) Complétez le répertoire du projet du sous-projet, tel que les ressources, les répertoires de chaque couche, etc., et ajoutez le fichier de configuration application.yml. Notez que le contenu du fichier de configuration de copie est sujet à des problèmes

8) Ajoutez la classe de démarrage YebApplication et ajoutez les annotations d'analyse du mappeur

9) Mettez le fichier de configuration application.yml dans le répertoire de configuration

1. Créez le fichier pom du projet parent -yeb-back

Ce projet adopte le projet global Maven, et il y aura un projet parent - yeb-back. Il existe des sous-projets sous le projet parent : logique métier complète du cloud E office - serveur yeb, projet de boîte aux lettres, projet d'ingénierie inverse - générateur yeb.

Le projet parent n'est utilisé que pour la gestion des dépendances de l'ensemble du projet pom. À l'exception de pom.xml, aucun autre fichier n'est nécessaire et supprimé.

Modifiez le fichier pom.xml, supprimez la balise dependencies ainsi que la balise build et son contenu, et ajoutez le pom dans la balise packaging 

<?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. Modifiez le fichier pom du sous-projet -yeb-server

Créez un projet de module et utilisez Maven pour créer un sous-projet de module de démarrage rapide yeb-server responsable de l'ensemble de notre logique métier. Modifiez le projet de module yeb-server nouvellement créé, supprimez la classe App et la classe AppTest générées, puis ajoutez un nom de package de serveur. Introduisez les coordonnées du projet parent dans le pom.xml du sous-projet yeb-server et associez le projet parent (projet principal). Supprimez la balise build bulid et supprimez les dépendances (car nous copions directement les dépendances requises dans)

 Dans le fichier XML, ajoutez une dépendance sur le projet parent. Et ajoutez les dépendances utilisées dans le projet, le code global :

<?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. Ajoutez le fichier de configuration 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. Ajouter la classe de démarrage 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. Générateur automatique d'ingénierie inverse

1) Qu'est-ce qu'AutoGenerator

AutoGenerator est le générateur de code de MyBatis-Plus. Grâce à AutoGenerator, vous pouvez générer rapidement le code de Pojo, Mapper, Mapper XML, Service, Controller et d'autres modules.

2) Que peut faire AutoGenerator ?

De nombreuses duplications de travail peuvent être évitées. Par exemple : 1. Avant de développer la fonction, la classe et l'attribut Pojo correspondants (private int age ;) seront créés en fonction de la table et du champ. Le nom de la classe pojo doit correspondre au nom de la table et les attributs doivent correspondre aux champs de la table. Pour une seule table, c'est presque un outil complet, ce qui améliore considérablement l'efficacité du développement. Accordez plus d'attention à la réalisation de la logique métier.

3) Comment l'utiliser ?

Dans notre projet, utilisez l'AutoGenerator de MyBatis pour générer automatiquement un mappeur, un service et un contrôleur. L'utilisation du générateur de code d'ingénierie inverse AutoGenerator fourni avec MyBatisPlus peut générer rapidement des codes pour divers modules tels que Entity, Mapper, Mapper XML, Service et Controller, ce qui améliore considérablement l'efficacité du développement.

4) La structure des répertoires du projet .yeb-generator

  1. Utilisez le démarrage rapide de maven pour créer un nouveau sous-projet de générateur de code d'ingénierie inverse yeb-generator , qui est spécialement utilisé pour la génération de chaque code de module. Copiez le code de couche mapper|service|controller généré automatiquement à l'emplacement correspondant dans yeb-server.
  2. Supprimez le contenu inutilisé dans le sous-projet yeb-generator pom.xml nouvellement créé, spécifiez les coordonnées du projet parent, la copie en dépend et créez un nouveau générateur de nom de package.

5) Fichier de classe CodeGenerator

Exécutez la méthode main dans la classe que nous avons écrite, puis entrez notre tableau ci-dessous. Si le tableau ci-dessous (c'est-à-dire le tableau correspondant dans la base de données) générera automatiquement le fichier de mappage correspondant.

Exécutez le fichier ci-dessus, puis entrez le nom de la table dans la zone de contrôle :

 Veuillez saisir le nom de la table, séparé par plusieurs virgules anglaises :
 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_politics_status, t_ position, t_role, t_salary, t_salary_adjust , t_sys_msg ,t_sys_msg_content

code:

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. fichier pom du projet 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. Copiez le mapper\service\controller généré dans le répertoire yeb-server

1) Dans le sous-projet yeb-generator, après avoir généré les classes de chaque module, copiez-les dans le sous-projet yeb-server

2) Après avoir copié dans le sous-projet yeb-server, supprimez les classes de chaque module généré dans le sous-projet yeb-generator, car elles rapporteront du rouge

3) Ajoutez les dépendances requises pour résoudre le problème de reporting rouge, comme l'ajout de dépendances swagger2

4) Fichier d'ingénierie inverse CodeGenerator, vous devez configurer le package dans lequel vous souhaitez générer la classe de module correspondante dans ce fichier, et il contient des commentaires spécifiques

répertoire du serveur Yeb

 

Le répertoire de la couche yeb-server/controller est comme indiqué dans la figure ci-dessous, chaque fichier est généré par CodeGenerator en fonction du nom de la table

La construction du projet est terminée et le combat proprement dit du projet commencera

Je suppose que tu aimes

Origine blog.csdn.net/qq_36384657/article/details/124676242
conseillé
Classement