代码生成器(3.5.1+)

参考文档icon-default.png?t=M3C8https://blog.csdn.net/qq_42682745/article/details/120626012需要注意的问题:

1.代码生成器中,需要的功能是手动输入表的名称的话,就将参考官方的代码,我这里是我自己修改的代码(需要提前配置好数据库,在springboot的yml文件里面配置):

package com.yao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @Author:ZhZi
 * @Date:2022/4/16 14:45
 * @Version:IntelliJ IDEA
 * @Description:代码生成器-mybatis-plus
 */
public class CodeGenerator {



    /**
     * 执行初始化数据库脚本
     */
    // public static void before() throws SQLException {
    //     Connection conn = DATA_SOURCE_CONFIG.build().getConn();
    //     InputStream inputStream = H2CodeGeneratorTest.class.getResourceAsStream("/sql/init.sql");
    //     ScriptRunner scriptRunner = new ScriptRunner(conn);
    //     scriptRunner.setAutoCommit(true);
    //     scriptRunner.runScript(new InputStreamReader(inputStream));
    //     conn.close();
    // }

    /**
     * 数据源配置
     */
    private static final DataSourceConfig DATA_SOURCE_CONFIG = new DataSourceConfig
            .Builder("jdbc:mysql://127.0.0.1:3306/vueadmin","root","root")
            .dbQuery(new MySqlQuery())
            .schema("mybatis-plus")
            .typeConvert(new MySqlTypeConvert())
            .keyWordsHandler(new MySqlKeyWordsHandler())
            .build();

    /**
     * 执行 run
     */
    public static void main(String[] args){
        //before();

        List tables = new ArrayList<>();
        tables.add("p_user");
        tables.add("p_question");
        tables.add("p_answer");
        tables.add("p_correct");

        //自动生成,连接数据库
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/vueadmin","root","root")
                // 全局配置
                .globalConfig(builder -> {
                    builder.author("周大象")
                            .outputDir(System.getProperty("user.dir")+"\\src\\main\\java")    //输出路径(写到java目录)
                            // .enableSwagger()           //开启swagger
                            .commentDate("yyyy-MM-dd")//创建时间
                            .fileOverride();            //开启覆盖之前生成的文件;

                })
                // 包配置
                .packageConfig( builder-> {
                    builder.parent("com.yao")//主文件夹名 com.yao
                    // .moduleName("practice")//模块名
                            .entity("entity")//实体类
                            .service("service")//业务层接口
                            .serviceImpl("service.impl")//业务层接口实现
                            .controller("controller")//表现层
                            .mapper("mapper")//dao层
                            .xml("mapper")//spring 的mapper配置文件
                            .pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir")+"\\src\\main\\resources\\mapper"));

                })
                // 策略配置
                .strategyConfig((scanner, builder) ->
                        builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                                .addTablePrefix("sys_")//过滤表名前缀
                                //表现层
                                .controllerBuilder()//表现层controller
                                .formatFileName("%sController")
                                .enableRestStyle()//开启RestStyle编程风格
                                // .enableHyphenStyle()
                                //pojo
                                .entityBuilder()//实体javabean
                                .enableLombok()
                                .logicDeleteColumnName("deleted")//逻辑删除的字段
                                .enableTableFieldAnnotation()//属性加上说明注释
                                //业务层
                                .serviceBuilder().//业务层
                                formatServiceFileName("%sService")//业务层接口名
                                .formatServiceImplFileName("%sServiceImpl")//业务层实现类

                                //mapper层配置策略
                                .mapperBuilder()
                                .superClass(BaseMapper.class)//继承的父类
                                .formatMapperFileName("%sMapper")//@Mapper开启
                                .enableMapperAnnotation()
                                .formatXmlFileName("%sMapper")
                )
                /*
                    模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
                   .templateEngine(new BeetlTemplateEngine())
                   .templateEngine(new FreemarkerTemplateEngine())
                 */
                .templateConfig(builder -> {
                    // 实体类使用我们自定义模板
                    builder.entity("templates/myentity.java");
                })// 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }

    // 处理 all 情况
    protected static List getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

}

2.同时还要注意当前工作的目录,之前试过一次由于idea的工作目录是D:\JAVA\springboot,导致输出的文件路径错误,你可以试一下使用输出路径查看当前的工作路径:

/**
 * @Author:ZhZi
 * @Date:2022/4/17 17:15
 * @Version:IntelliJ IDEA
 * @Description:
 */
public class PrinS {

    public static void main(String[] args) {
        //工作路径
        System.out.println(System.getProperty("user.dir"));
    }
}

我用的修改idea默认的工作路径为模块的路径,修改方法: 

代码生成器(3.5.1+)_第1张图片

你可能感兴趣的:(springboot,intellij-idea,java)