环境初始化
前言: 前几天老师布置了设计模式的大作业,要求使用三到五种设计模式来设计一个票务系统。
因此,我打算记录一下完成步骤
技术选型
数据库选择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)