运用设计模式设计一个票务系统(项目初始化)

168 阅读3分钟

环境初始化

前言: 前几天老师布置了设计模式的大作业,要求使用三到五种设计模式来设计一个票务系统。

因此,我打算记录一下完成步骤

技术选型

数据库选择MySQL,后端使用springboot,前端使用vue。

依赖配置

我选用的springboot版本为3.0.5, mybatisplus也需要3.5.3上版本的,不然会发生映射错误。

具体错误: Error creating bean with name 'sysUserServiceImpl': Unsatisfied dependency expressed through field 'baseMapper',这种错误在低版本一般是因为没有扫描到mapper,但是高版本中加了@Mapper注解也不能解决这个问题,但是都换为高版本后问题成功解决。

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--springboot版本过高的话需要将mybatisplus版本提高-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3.1</version>
    </dependency>
    <!--Mybatis Plus 代码生成器需要 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.5.3.1</version>
    </dependency>
    <!--生成器模板-->
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

使用代码生成器生成基本代码

依赖:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

上面是代码生成器所需要的依赖。

代码生成器代码

先进入以下网址,复制基本使用方法: 代码生成器(新) | MyBatis-Plus (baomidou.com)

然后可以进行细致化配置, 所有的详细配置可以参照官网: 代码生成器配置新 | MyBatis-Plus (baomidou.com)

知识点补充

Mybatisplus的FastAutoGenerator类专门用于快速构建生成器代码, 它里面维护了很多属性比如

dataSourceConfigBuilder: 数据库源的配置,保证能连接到数据库,url, username和password

globalConfigBuilder: 全局配置,比如禁止打开输出目录, 指定输出目录(记得将其输出到项目构建的位置),设置作者名,开启swagger之类的

packageConfigBuilder: 这里去设置父包名, 父模块名和其它常用类的包名,像是mapper包,entity包,service包,controller包之类的

strategyConfigBuilder: 策略配置,这里的内容就很多,主要是对细节上的处理,在表生成时,我们可以为其添加前缀过滤,后缀过滤等,还可以对controller,mapper和service进行策略配置。详细的参照我上面放的官网。

injectionConfigBuilder: 注入配置(自定义配置模板文件等, 一般不需要)

templateConfigBuilder: 模板配置,配置生成的比如service,entity,controller这些包的路径。

templateEngine: 模板引擎配置,默认为 Velocity

下面是我的生成器代码,可以参考并修改

public class CodeGenerator {
  @Test
  public void run(){
      FastAutoGenerator.create("jdbc:mysql://localhost:3306/ticket?serverTimezone=GMT%2B8", "root", "Aagui123456")

              //全局设置
              .globalConfig(builder -> {
                  builder.author("guilixue") // 设置作者
                          .outputDir("D:\gitee\ticket\ticket-management-system\ticket\src\main\java"); // 指定输出目录
              })
              // 包设置
              .packageConfig(builder -> {
                  builder.parent("com.example") // 设置生成的代码的父包名
                          .moduleName("ticket") // 设置包名
                          .entity("entity") // 实体包名
                          .service("service") // service包名
                          .serviceImpl("service.impl") // impl包名
                          .mapper("mapper") // 持久层包名
                          .controller("controller"); // controller包名
              })
              // 策略设置
              .strategyConfig(builder -> {
                  builder.addInclude("sys_user") // 设置需要生成的表名
                          .enableCapitalMode()
                          .entityBuilder() 
                          .enableLombok()
                          .idType(IdType.AUTO) // id策略
                          .controllerBuilder()
                          .enableRestStyle()  
                  ;
              })
              .templateEngine(new VelocityTemplateEngine()) // 默认的是Velocity引擎模板
              .execute();
  }
}

项目环境搭配差不多了。


下一篇: 数据库设计运用设计模式设计一个票务系统(数据库设计) - 掘金 (juejin.cn)