开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情
为什么需要代码生成器,因为在日常工作中会有许多简单的增删改查功能,如果一个一个的手写会浪费很多时间,使用代码生成器可以根据数据库的表反向生成我们所需要的代码,大大节约了开发时间,只需要在生成后进行简单调试即可完成任务。
在这直接贴上代码生成器的代码,代码旁有附有注释,基本看了就会,这个文件直接放到主文件夹底下就可以了。
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 代码生成器
*/
public class CodeGenerator {
public static void main(String[] args) {
/* ************ 配置部分 ************ */
String url = "jdbc:mysql://?&useSSL=false&serverTimezone=Asia/Shanghai"; // 数据库url
String username = "root"; // 数据库用户名
String password = ""; // 数据库密码
List<String> tables = new ArrayList<>();
// 添加要生成的表名
// tables.add("admin");
// tables.add("class");
// tables.add("course_major");
tables.add("course_major_year");
String parent = ""; // 项目包名 com.quanta
String mode = ""; // 模块名 archetype
String author = "";
/* ************ 配置部分 ************ */
String projectPath = System.getProperty("user.dir");
String outPutDir = projectPath + "/src/main/java";
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author(author) // 设置作者
// .fileOverride() // 覆盖已生成文件
.outputDir(outPutDir); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent(parent)
.moduleName(mode)
.entity("entity")
.service("service")
.serviceImpl("service.serviceImpl")
.controller("controller")
.mapper("mapper")
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"));
})
.strategyConfig(builder -> {
builder.addInclude(tables)
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder()
.enableLombok()
.logicDeleteColumnName("deleted")
.enableTableFieldAnnotation()
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle()
.mapperBuilder()
.enableBaseResultMap() //生成通用的resultMap
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper");
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
依赖文件
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!--mybatis代码生成器依赖-->
<!--这两个主要的依赖要加上-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!--默认模板,不引入这个会报错-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--mybatis代码生成器依赖-->