B ステーション クラウド E オフィス Vue+SpringBoot フロントエンドとバックエンドの分離プロジェクト - バックグラウンド プロジェクトを構築するための MVC 3 層アーキテクチャ

このプロジェクトは、ステーション B の Cloud E オフィスから提供されたものです。メモには、プロジェクト構築のプロセスと関連する知識ポイントが整理されています。学習するには、コードをコピーして貼り付けるだけでは十分ではなく、それが何なのか、そしてなぜそうなるのかを知る必要があります。私のメモがアイデアを提供できれば幸いです。すべてのパートナーからの修正を歓迎します。

プロジェクトのフロントエンド学習ノート ディレクトリ

B ステーション クラウド E オフィス Vue+SpringBoot フロントエンドとバックエンド分離プロジェクト - vue.js プロジェクトを構築

B ステーション クラウド E オフィス Vue+SpringBoot フロントエンドとバックエンドの分離プロジェクト - フロントエンドはメニュー ディレクトリを動的に取得します

1. プロジェクト紹介

このプロジェクトは、Vue+Spring Boot に基づいてフロントエンドとバックエンドの分離プロジェクトを構築します。このプロジェクトは、日々の事務処理(日々のプロセスの承認、ニュース、通知、お知らせ、ファイル情報、財務、人事、経費、資産、管理、プロジェクト、モバイルオフィスなど)を管理するためのオンラインオフィスシステムを実装します。ソフトウェアによる管理が容易です。テクノロジーの面では、このプロジェクトは最も主流のフロントエンドとバックエンドの分離開発モデルを採用し、業界で最も人気のあるオープンソース フレームワークであり、非常に活発なコミュニティである Spring Boot を使用してバックエンドを構築します。オンラインオフィスシステム「クラウドE-office」の実現を目指します。役職管理、役職管理、部門管理、従業員管理、給与管理、オンラインチャットなどのモジュールが含まれます。このプロジェクトでは、業界の主流のサードパーティ コンポーネントも使用して、知識とスキルのプールを拡大します。フロントエンドはクライアント コードを個別に記述するだけでよく、バックエンドはデータ インターフェイスを提供するサーバー コードを個別に記述するだけでよく、プロジェクト フレームワークは次のように設計されています。

2. バックエンドの技術アーキテクチャ

バックエンドの主流開発フレームワーク: SpringBoot+Spring MVC+MyBatisPlus。

  • プロジェクトの骨格をゼロから構築する場合、将来的に拡張しやすく、マイクロサービスシステムに適した、使い慣れた適切なテクノロジーを選択するのが最善です。したがって、一般に Springboot がフレームワークの基盤として使用され、切り離すことはできません。
  • 次に、データ層については、使いやすく保守も簡単な Mybatis をよく使用します。ただし、単一テーブルの操作は難しく、特にフィールドの追加や削除の場合は面倒なので、ここでは開発を簡素化するために生まれ、簡単な操作だけで済む Mybatis Plus (https://mp.baomidou.com/) を使用することをお勧めします。構成を使用すると、CRUD 操作をすばやく実行でき、時間を大幅に節約できます。
  • プロジェクトでは複数のサーバーをデプロイする必要があることを考慮し、セッションやその他の情報を共有する必要があるため、現在主流のキャッシュ ミドルウェアである Redis がプロジェクトにも適しています。
  • 次に、フロントエンドとバックエンドが分離されているため、ユーザー ID 認証情報として jwt を使用します。セキュリティ認証と権限管理には Spring Security を使用します。Redis はキャッシュに使用され、RabbitMq は電子メールの送信に使用され、EasyPOI は従業員データのインポートとエクスポートに使用され、WebSocket はオンライン チャットに使用されます。

セキュリティフレームワーク: Spring Security

トークン: JWT

グラフィック検証コード: Kaptcha

キャッシュ: redis

ドキュメントのインポートとエクスポート: EasyPOI

メッセージ キュー: RabbitMQ は非同期処理を実行し、電子メールを送信します。

メールコンポーネント: メール

ライブチャット: WebSocket

ファイルサーバー: FastDFS

データベースMySQL+Redis

3. MVC 3 層アーキテクチャ

コントローラー層はサービス層のメソッドを呼び出し、サービス層はDao層のメソッドを呼び出し、呼び出しのパラメーターはエンティティ層を介して渡されます。一般に、これによりビジネス ロジックが明確になり、コードの記述がより便利になります。実際、これは、階層の分離、再利用、およびテストとメンテナンスの容易さの目的を達成するために、同じ種類のコードをまとめて階層を形成できるようにするルールを提供することです。私たちのプロジェクトでは、このシンプルな 3 層アーキテクチャ (DAO + サービス + コントローラー) を長期にわたって採用していきますが、皆さんにもこれら 3 つのモジュール間の役割分担を徐々に理解していただければ幸いです。ここで簡単に要約しますが、最初に予備的な印象を持ってください。

DAO はデータベースとの直接対話に使用され、追加、削除、変更などの操作を定義します。サービスはビジネス ロジックを担当し、関数に関連するコードは通常ここに記述されます。取得したデータを操作するためのさまざまなメソッドを記述して呼び出します。コントローラーはデータのやり取り、つまり受信を担当します フロントエンドによって送信されたデータは、サービスを呼び出すことによって処理され、返されます

 特定のプロジェクトのプロセスは次のとおりです。

コントローラー-->サービスインターフェイス-->serviceImpl-->daoインターフェイス-->daoImpl-->マッパー-->db

4. プロジェクトの準備 - データベースのインポート

1. データベースアドレス:

リンク: https://pan.baidu.com/s/1PMIJdX3xXvKa0UrAtvUZ1Q?pwd=ay2b
抽出コード: ay2b

2. データベースの準備

新しい yeb データベースを作成し、データベース文字セットとして utf8mb4 を選択し、データベース フォルダーに配置された yeb.sql データベース スクリプトをインポートします。データベースには比較的主流とされているMySQLを採用しており、パフォーマンスやボリュームの点で優れています。もちろんデメリットもありますが、データベースはここでの議論の焦点では​​ありません。一時的に。navicat を使用して新しいデータベースを作成します。

テーブルを選択します - 「右クリックして SQL を実行します。SQL ファイルは Baidu ネットワーク ディスクに配置されています

下位バージョンには utf8 を選択し、上位バージョンには utf8mb4 を選択します

mysql5.6のバージョン

デフォルト: データベース文字セット。データベースのデフォルトのエンコードを utf8 に設定します。

COLLATE: データベース照合規則、デフォルト設定は utf8_general_ci です。

mysql8のバージョン

デフォルト: データベース文字セット。データベースのデフォルトのエンコードを utf8mb4 に設定します。

COLLATE: データベース照合規則、デフォルト設定は utf8mb4_0900_ai_ci です。

3. テーブルディレクトリ

SQL実行後に生成されるテーブルは以下の通り

 

4.IDEA で Lombok をインストールする

5. プロジェクトをビルドする

IDEA は Spring Initializr を使用して SpringBoot プロジェクトを作成します。バックエンド プロジェクトは Maven 集約の形式を採用し、親プロジェクトは pom の依存関係管理を行います。主な仕事内容は以下の通りです。

1) 新しい SpringBoot プロジェクトを親プロジェクトとして作成します。これはすべてのプロジェクトの pom 依存関係管理にのみ使用されるため、ほとんどのファイルとフォルダーは削除できます。

2) pom.xml ファイルを変更し、依存関係タグ、ビルドタグとその内容を削除し、パッケージ化タグに pom を追加します。

3) モジュール プロジェクトを作成し、Maven を使用してビジネス ロジック全体を担当するクイックスタート モジュール サブプロジェクト yeb-server を作成します。

4) 新しく作成したモジュールプロジェクト yeb-server を変更し、生成された App クラスと AppTest クラスを削除し、サーバー パッケージ名を追加します。

5) yeb-serverサブプロジェクトのpom.xmlに親プロジェクトの座標を導入し、親プロジェクト(メインプロジェクト)を関連付けます。

6) build bulid タグを削除し、依存関係を削除します (必要な依存関係を直接コピーするため)。

7) サブプロジェクトプロジェクトのリソース、各レイヤーのディレクトリなどのディレクトリを完成させ、application.yml 設定ファイルを追加します (コピー設定ファイルの内容は問題が発生しやすいので注意してください)

8) スタートアップ クラス YebApplication を追加し、マッパー スキャン アノテーションを追加します

9) 設定ファイル application.yml を config ディレクトリに置きます

1. 親プロジェクトの pom ファイル -yeb-back を作成します。

このプロジェクトは Maven 集約プロジェクトを採用しており、親プロジェクトである yeb-back が存在します。親プロジェクトの下にはサブプロジェクトがあります: 完全なクラウド E オフィス ビジネス ロジック - yeb-server、メールボックス プロジェクト、リバース エンジニアリング プロジェクト - yeb-generator。

親プロジェクトは、プロジェクト全体の依存関係管理にのみ使用されます。pom.xml を除いて、他のファイルは必要なく削除されます。

pom.xml ファイルを変更し、依存関係タグ、ビルド タグ、およびそのコンテンツを削除し、パッケージング タグに 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 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. サブプロジェクト pom ファイル -yeb-server を変更します。

モジュール プロジェクトを作成し、Maven を使用してビジネス ロジック全体を担当するクイックスタート モジュール サブプロジェクト yeb-server を作成します。新しく作成したモジュール プロジェクト yeb-server を変更し、生成された App クラスと AppTest クラスを削除し、サーバー パッケージ名を追加します。yeb-server サブプロジェクトの pom.xml に親プロジェクトの座標を導入し、親プロジェクト (メイン プロジェクト) を関連付けます。build bulid タグを削除し、依存関係を削除します (必要な依存関係を直接コピーするため)。

 XML ファイルに、親プロジェクトへの依存関係を追加します。そして、プロジェクトで使用される依存関係、コード全体を追加します。

<?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. 構成ファイル 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. 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. リバース エンジニアリング AutoGenerator

1). オートジェネレーターとは何ですか

AutoGenerator は MyBatis-Plus のコード ジェネレーターで、Pojo、Mapper、Mapper XML、Service、Controller およびその他のモジュールのコードを迅速に生成できます。

2). AutoGenerator では何ができるのですか?

多くの作業の重複を回避できます。例: 1. 関数を開発する前に、テーブルとフィールドに従って、対応するPojoクラスと属性 (private int age;) が作成されます。pojo クラス名はテーブル名に対応し、属性はテーブルのフィールドに対応する必要があります。単一テーブルの場合はほぼ万能ツールとなり、開発効率が大幅に向上します。ビジネスロジックの実現にもっと注意を払ってください。

3). どのように使用しますか?

私たちのプロジェクトでは、MyBatis の AutoGenerator を使用して、マッパー、サービス、およびコントローラーを自動的に生成します。MyBatisPlusに付属するリバースエンジニアリングコード生成ツールAutoGeneratorを使用すると、Entity、Mapper、Mapper XML、Service、Controllerなどの各種モジュールのコードを迅速に生成でき、開発効率が大幅に向上します。

4). .yeb-generator プロジェクトのディレクトリ構造

  1. Maven のクイックスタートを使用して、新しいリバース エンジニアリング コード ジェネレーター サブプロジェクトyeb-generatorを作成します。これは、各モジュール コードの生成に特別に使用されます。自動的に生成されたマッパー|サービス|コントローラー層コードを yeb-server 内の対応する場所にコピーします。
  2. 新しく作成した yeb-generator サブプロジェクト pom.xml 内の未使用のコンテンツを削除し、親プロジェクトの座標を指定して、それに依存するものをコピーし、新しいパッケージ名ジェネレーターを作成します。

5). CodeGenerator クラスファイル

作成したクラスで main メソッドを実行し、以下のテーブルを入力すると、以下のテーブル (データベース内の対応するテーブル) があれば、対応するマッパー ファイルが自動的に生成されます。

上記のファイルを実行し、コントロール ボックスにテーブル名を入力します。

 複数の英語のカンマで区切ってテーブル名を入力してください:
 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

コード:

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. yeb-generatorプロジェクト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">
    <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. 生成されたmapper\service\controllerをyeb-serverディレクトリにコピーします。

1) yeb-generator サブプロジェクトで、各モジュールのクラスを生成した後、それらを yeb-server サブプロジェクトにコピーします

2) yeb-server サブプロジェクトにコピーした後、yeb-generator サブプロジェクトで生成された各モジュールのクラスを削除します。これらのクラスは赤色をレポートするためです。

3) swagger2 依存関係の追加など、赤色レポートの問題を解決するために必要な依存関係を追加します。

4) リバース エンジニアリング ファイル CodeGenerator。このファイルに対応するモジュール クラスを生成するパッケージを設定する必要があります。このファイルには特定のコメントがあります。

yeb-server ディレクトリ

 

yeb-server/controller層のディレクトリは下図の通りで、各ファイルはテーブル名に従ってCodeGeneratorによって生成されます。

プロジェクトの構築が完了し、プロジェクトの実戦が始まります

おすすめ

転載: blog.csdn.net/qq_36384657/article/details/124676242
おすすめ