code Generator代码生成器

240 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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代码生成器依赖-->