JavaUtils - [04] 代码生成器(新)

题记部分

 

 

001 || 引入依赖

<!-- Code Generator -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.9</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.32</version>
</dependency>

 

002 || 核心内容

package com.manulife.common;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;
import java.util.Scanner;

/**
 * @author harley
 * @since 2024-12-09 22:00:02
 */
public class CodeGenerator {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 获取数据库连接信息
        System.out.println("请输入数据库URL:");
        String dbUrl = scanner.nextLine();
        System.out.println("请输入数据库用户名:");
        String dbUsername = scanner.nextLine();
        System.out.println("请输入数据库密码:");
        String dbPassword = scanner.nextLine();
        // 获取其他配置信息
        System.out.println("请输入作者名字:");
        String author = scanner.nextLine();
        System.out.println("请输入父包名(例如:com.yourcompany):");
        String parentPackage = scanner.nextLine();
        System.out.println("请输入模块名(例如:module-name):");
        String moduleName = scanner.nextLine();
        System.out.println("请输入需要生成的表名(多个表以逗号分隔):");
        String tableNames = scanner.nextLine();

        FastAutoGenerator.create(dbUrl, dbUsername, dbPassword)
                .globalConfig(builder -> {
                    builder.author(author) // 设置作者名
                            .outputDir(System.getProperty("user.dir") + "/src/main/java"); // 设置输出目录
                })
                .packageConfig(builder -> {
                    builder.parent(parentPackage) // 设置父包名
                            .moduleName(moduleName) // 设置模块名
                            .entity("entity") // 实体类包名
                            .mapper("mapper") // 映射层包名
                            .service("service") // 服务层包名
                            .serviceImpl("service.impl") // 服务层实现类包名
                            .controller("controller") // 控制层包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper")); // 设置mapper.xml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tableNames.split(",")) // 设置需要生成的表名
                            .entityBuilder() // 实体类生成策略
                            // .formatFileName("%sBean") // 实体类文件名格式
                            .enableLombok() // 开启 Lombok 模型
                            .logicDeleteColumnName("isDeleted") // 逻辑删除字段名
                            .controllerBuilder() // 控制器生成策略
                            .formatFileName("%sController") // 控制层文件名格式
                            .enableRestStyle() // REST 风格控制器
                            .enableHyphenStyle() // 使用连字符命名风格
                            .serviceBuilder() // Service 生成策略
                            .formatServiceFileName("%sService") // 格式化 service 文件名
                            .formatServiceImplFileName("%sServiceImpl") // 格式化 serviceImpl 文件名
                            .mapperBuilder() // Mapper 生成策略
                            .formatMapperFileName("%sMapper") // 格式化 mapper 文件名
                            .formatXmlFileName("%sMapper") // 格式化 mapper.xml 文件名
                            .enableBaseColumnList() // 启用 BaseColumnList, 在mapper.xml中生成对应的配置
                            .enableBaseResultMap(); // 启用 BaseResultMap, 在mapper.xml中生成对应的配置
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用 FreeMarker 引擎,默认是 Velocity
                .execute(); // 执行代码生成

        System.out.println("代码生成完成!");
        scanner.close();
    }

}

 

003 || 使用

直接运行代码

 

 

 

 

posted @   HOUHUILIN  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示