Mybatis-Plus-Generator

发布时间:2023年12月26日

mybatis-plus-generator 自动生成代码

<!-- mybatis plus自动代码生成 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.0</version>
    <scope>provided</scope>
</dependency>

<!-- mybatis-plus默认模板 -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

<!-- 使用Freemarker引擎模板,默认的是Velocity引擎模板 -->
<dependency>
     <groupId>org.freemarker</groupId>
     <artifactId>freemarker</artifactId>
     <version>2.3.31</version>
 </dependency>

模板一

import com.baomidou.mybatisplus.generator.*;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.*;
import java.util.Objects;

/**
 * 如何使用:将工具类的静态常量改成符合你自己的需要即可。
 */
public class MybatisPlusGeneratorApp {
    /* mysql 连接 */
    private static final String         ip = "127.0.0.1";
    private static final String       port = "3306";
    private static final String   database = "scott";
    private static final String        url = String.format("jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", ip, port, database);
    private static final String driverName = "com.mysql.cj.jdbc.Driver";
    private static final String   username = "root";
    private static final String   password = "123456";

    /* 各种、各级别包名 */
    private static final String moduleName = null;  // 模块名。如果是不是 maven 多模块项目,这里写 null ,注意,不是 "null" 。
    private static final String parentPackage = "xxx.yyy.zzz"; // 父包名。如果为空,将下面子包名必须写全部,否则就只需写子包名
    private static final String  entityIn = "bean.po";
    private static final String  mapperIn = "dao";
    private static final String     xmlIn = "mappers";
    private static final String serviceIn = "service";

    /* 要操作的表名 */
    private static final String tableNames = "department,employee"; // 多个表名用逗号隔开。不要有空格。

    public static void main(String[] args) {
        try {
            generator();
            System.out.println("mybatis 代码生成成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Mybatis一键生成entity,mapper,mapper.xml,service,serviceImpl,controller
     */
    public static void generator() {
        AutoGenerator mpg = new AutoGenerator();
        mpg.setGlobalConfig(globalConfig());// 全局配置
        mpg.setDataSource(dataSourceConfig());// 数据源配置
        mpg.setPackageInfo(packageConfig());// 包配置
        mpg.setStrategy(strategyConfig());// 策略配置
        mpg.setTemplate(templateConfig());// 模板配置
        mpg.execute();
    }

    /**
     * 全局配置
     *
     * @return GlobalConfig
     */
    private static GlobalConfig globalConfig() {
        String projectPath = System.getProperty("user.dir");
        GlobalConfig globalConfig = new GlobalConfig();
        // 文件输出目录
        if (Objects.equals(moduleName, null) || Objects.equals(moduleName.trim(), ""))
            globalConfig.setOutputDir(projectPath + "/src/main/java");
        else
            globalConfig.setOutputDir(projectPath + "/" + moduleName + "/src/main/java");
        // 添加作者信息
        globalConfig.setAuthor(System.getProperty("user.name"));
        //设置时间类型为Date
        globalConfig.setDateType(DateType.TIME_PACK);
        // 生成文件后不默认打开
        globalConfig.setOpen(false);
        // 设置生成的各种“东西”的名字
        globalConfig.setEntityName("%sPo");
        globalConfig.setMapperName("%sDao");
        // 自定义service生成的名字,用于删除自动生成的I前缀
        //globalConfig.setServiceName("%sService");
        return globalConfig;
    }

    /**
     * 数据源设置
     *
     * @return DataSourceConfig
     */
    private static DataSourceConfig dataSourceConfig() {
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setDriverName(driverName);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        return dataSourceConfig;
    }

    /**
     * 包配置
     *
     * @return PackageConfig
     */
    private static PackageConfig packageConfig() {
        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        // 包名
        packageConfig.setParent(parentPackage);
        // 各个包目录起名
        packageConfig.setEntity(entityIn);
        packageConfig.setMapper(mapperIn);
        packageConfig.setXml(xmlIn);
//        packageConfig.setService(serviceIn);
        return packageConfig;
    }

    /**
     * 策略配置
     *
     * @return StrategyConfig
     */
    private static StrategyConfig strategyConfig() {
        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        // 表名自动下划线转驼峰
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 字段名自动下划线转驼峰命
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        // 设置实体类的lombok(此处看个人使用,如果不使用lombok,那么在生成之后再去添加构造方法等等)
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setRestControllerStyle(true);
        // scanner("表名,多个英文逗号分割").split(",")
        strategyConfig.setInclude((tableNames).split(","));
        // 驼峰生成方法
        strategyConfig.setControllerMappingHyphenStyle(true);
        return strategyConfig;
    }

    /**
     * 模板配置项
     *
     * @return TemplateConfig
     */
    private static TemplateConfig templateConfig() {
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(ConstVal.TEMPLATE_XML);
        // 不生成 mapper.xml 文件
        // templateConfig.setXml(null);
        // 不生成 service
        templateConfig.setService(null);
        // 不生成 service 实现类
        templateConfig.setServiceImpl(null);
        // 不生成 controller 类
        templateConfig.setController(null);
        return templateConfig;
    }
}

模板二(推荐、简单够用)

public void generator() {
        String rootDir = "E:/generator";
        String outputDir = rootDir + "/java";                  //生成的文件放置目录
        String packageName = "xxx.yyy.zzz";    //设置父包名
        String mapperXmlDir = rootDir + "/resources/" + packageName.replaceAll("\\.", "/") + "/mapper"; //xml文件放置目录

        String url =""  //同上设置即可;

        FastAutoGenerator.create(url, "root", "123456")//name password
                .globalConfig(builder -> {
                    builder.author("myname") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(outputDir); // 指定输出目录
                }).packageConfig(builder -> {
                    builder.parent(packageName) // 设置父包名
                            // 设置mapperXml生成路径
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlDir));
                }).strategyConfig(builder -> {
                    builder.addInclude("id_departmant","test_employee")  //给该表生成
                            .addTablePrefix("id_", "test_") //设置过滤表前缀
                            .entityBuilder().enableLombok()//entity使用lombok
                            .entityBuilder().columnNaming(NamingStrategy.no_change)  //是否开启驼峰
                            .controllerBuilder() //创建Controller
                           	.enableRestStyle() //使用restController
                            .mapperBuilder().enableMapperAnnotation();//开启mapper注解
                    // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                }).templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
文章来源:https://blog.csdn.net/m0_73393501/article/details/135227184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。