GUI 的 JavaWeb 鸡肋代码生成器 确定不了解了解?

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: GUI 的 JavaWeb 鸡肋代码生成器 确定不了解了解?

无聊的时候写的,很简单,娱乐而已。

基于 Mybatis-plus 的代码生成器加上 GUI 实现,可以可视化的生成代码,方便大家再编写项目时生成一些鸡肋,直接将生成的鸡肋导入项目即可。

效果展示86172ee5c0e645e9a28a354fc4911d04.gifGUI 界面1faee3aba38efedec410b49ad965c1bd.png

生成的鸡肋1c5765b8a720d4c82381e73adca0f86f.png

实战

导入依赖

导入用到的依赖。这里自动生成 Swagger 注释 API,Lombok 注解。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.5.5</version></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.4.3.4</version></dependency><!--mybatis-plus代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version><scope>provided</scope></dependency><!--freemarker模板--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version><scope>compile</scope></dependency><!--swagger--><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.6.3</version></dependency>

GUI 布局

使用 IDEA 进行最基础的布局。a2b49a1c59d3b86f0951978ca8a900e6.png

代码生成工具类

对生成策略进行一些简单的配置。

MyBatis-Plus 代码生成器详细讲解的博客:MyBatis-Plus——代码生成器(3.5.1+版本)_ZOOM_Jie -CSDN博客

/***  代码生成工具类*/publicclassGenerateCodeUtils {
/* 判断参数是否为空,代码生成 */publicstaticvoidisTrue(StringsqlUrl, StringsqlUserName, StringsqlPassword,
StringoutPutDir, StringxmlOutPutDir, StringsqlTable,
Stringauthor, StringpackageName, StringmodelName) throwsException {
if (isNotNull(sqlUrl) &&isNotNull(sqlUserName) &&isNotNull(sqlPassword) &&isNotNull(sqlTable) &&isNotNull(packageName) &&isNotNull(modelName)) {
GenerateCode(sqlUrl, sqlUserName, sqlPassword, outPutDir, xmlOutPutDir, sqlTable, author, packageName, modelName);
        } else {
thrownewException("字段为空");
        }
    }
/* 判断参数是否为空 */publicstaticbooleanisNotNull(Stringstr) {
return!"".equals(str) &&str!=null;
    }
// 处理 all 情况protectedstaticList<String>getTables(Stringtables) {
return"all".equals(tables) ?Collections.emptyList() : Arrays.asList(tables.split(","));
    }
/* 调用 Mybatis-plus 的代码生成器 */publicstaticvoidGenerateCode(StringsqlUrl, StringsqlUserName, StringsqlPassword,
StringoutPutDir, StringxmlOutPutDir, StringsqlTable,
Stringauthor, StringpackageName, StringmodelName) {
FastAutoGenerator.create(sqlUrl, sqlUserName, sqlPassword)
// 全局配置            .globalConfig((scanner, builder) ->builder.author(author)
                          .outputDir(outPutDir)
                          .commentDate("yyyy-MM-dd hh:mm:ss")
                          .dateType(DateType.TIME_PACK)
                          .enableSwagger()
                          .fileOverride()
                          .enableSwagger()
                         )
// 包配置            .packageConfig((scanner, builder) ->builder.parent(packageName)
                           .moduleName(modelName)
                           .entity("pojo")
                           .service("service")
                           .serviceImpl("serviceImpl")
                           .mapper("mapper")
                           .xml("mapper")
                           .other("utils")
                           .pathInfo(Collections.singletonMap(OutputFile.mapperXml, xmlOutPutDir))
                          )
// 策略配置            .strategyConfig((scanner, builder) -> {
builder.addInclude(getTables(sqlTable))
                    .serviceBuilder()
                    .formatServiceFileName("%sService")
                    .formatServiceImplFileName("%sServiceImpl")
                    .entityBuilder()
                    .enableLombok()
                    .disableSerialVersionUID()
                    .logicDeleteColumnName("deleted")
                    .naming(NamingStrategy.underline_to_camel)
                    .columnNaming(NamingStrategy.underline_to_camel)
                    .addTableFills(newColumn("create_time", FieldFill.INSERT), newColumn("modify_time", FieldFill.INSERT_UPDATE))
                    .enableTableFieldAnnotation()
                    .controllerBuilder()
                    .formatFileName("%sController")
                    .enableRestStyle()
                    .mapperBuilder()
                    .superClass(BaseMapper.class)
                    .formatMapperFileName("%sMapper")
                    .enableMapperAnnotation()
                    .formatXmlFileName("%sMapper");
            })
            .templateEngine(newFreemarkerTemplateEngine())
            .execute();
    }
}


GUI 窗口类(部分代码)

GUI 组件的布局,添加一些监听器。

/** GUI 窗口类*/publicclasscodeGernalextendsJFrame {
publicstaticvoidmain(String[] args) {
JFrameframe=newJFrame("codeGernal");
frame.setContentPane(newcodeGernal().AutoGenerateCode);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
    }
publicvoidGenerate() {
StringsqlUrl=SQLURL.getText();
StringsqlUserName=SQLUserName.getText();
StringsqlPassword=SQLPassword.getText();
StringoutDir=System.getProperty("user.dir") +"\\代码生成器";
StringoutPutDir=System.getProperty("user.dir") +"\\代码生成器\\src\\main\\java";
StringxmlOutPutDir=System.getProperty("user.dir") +"\\代码生成器\\src\\main\\resources\\";
StringsqlTable=SQLTable.getText();
Stringauthor=Author.getText();
StringpackageName=PackageName.getText();
StringmodelName=ModelName.getText();
/* 获取输入框的值,调用 GenerateCodeUtils 的方法 */try {
GenerateCodeUtils.isTrue(sqlUrl, sqlUserName, sqlPassword, outPutDir, xmlOutPutDir, sqlTable, author, packageName, modelName);
OutPutDir.setText(outDir);
TipsLabel.setText("代码生成成功");
        } catch (Exceptionexception) {
TipsLabel.setText(exception.getMessage());
        }
    }
publiccodeGernal() {
/* GenerateButton 鼠标单击事件 */GenerateButton.addMouseListener(newMouseAdapter() {
@OverridepublicvoidmouseClicked(MouseEvente) {
Generate();
            }
        });
/* ResetButton 鼠标单击事件 */ResetButton.addMouseListener(newMouseAdapter() {
@OverridepublicvoidmouseClicked(MouseEvente) {
SQLURL.setText("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8");
SQLUserName.setText("");
SQLPassword.setText("");
SQLTable.setText("Enter table names separated by English commas or enter \"all\"");
Author.setText("");
PackageName.setText("");
ModelName.setText("");
OutPutDir.setText("Auto generate code path");
TipsLabel.setText("");
            }
        });
/* SQLTable 获得失去焦点事件 */SQLTable.addFocusListener(newFocusAdapter() {
@OverridepublicvoidfocusGained(FocusEvente) {
if ("Enter table names separated by English commas or enter \"all\"".equals(SQLTable.getText())) {
SQLTable.setText("");
                }
            }
        });
SQLTable.addFocusListener(newFocusAdapter() {
@OverridepublicvoidfocusLost(FocusEvente) {
if ("".equals(SQLTable.getText())) {
SQLTable.setText("Enter table names separated by English commas or enter \"all\"");
                }
            }
        });
    }
}

源码

源码+jar包+EXE可执行文件下载地址:JavaWeb鸡肋代码生成器.zip-Java文档类资源-CSDN文库

扩展

打包成 .jar 包

IDEA 将普通 Java 项目打包成 Jar 包并运行_ZOOM_Jie -CSDN博客

打包成.exe可执行文件

使用 exe4j 将 jar 包生成 .exe 文件(敲详细)_ZOOM_Jie -CSDN博客

打包成安装包

Inno Steup 6 下载,安装,将 .exe 文件打包成安装程序(详细教程)_ZOOM_Jie -CSDN博客

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
4月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
6月前
|
SQL 前端开发 Java
JavaWeb 学习日记案例详解及 javaweb 完整项目案例实战指南
本文介绍了一个基于Spring Boot的JavaWeb企业员工管理系统完整案例,涵盖部门管理、员工管理、登录、异常处理、事务管理及AOP等核心功能实现,结合CSDN相关技术文章,提供详细技术方案与应用实例,适合JavaWeb开发者学习与参考。
350 0
|
11月前
|
人工智能 算法 Java
Java高级应用开发:AI赋能下的智能代码生成与优化
本文探讨了AI技术,特别是像DeepSeek这样的智能工具,在Java高级应用开发中的应用。AI在代码生成、优化、自动化测试等方面发挥重要作用,可自动生成高质量代码片段、提出优化建议并检测潜在错误,显著提升开发效率与代码质量。未来,AI将进一步推动Java开发的智能化和自动化,为开发者带来全新的开发体验。
|
12月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
237 4
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
132 2
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
593 5
|
移动开发 JavaScript 前端开发
Javaweb之Vue路由的详细解析
Vue.js是一款备受欢迎的前端框架,以其简洁的API和组件化开发模式著称。Vue Router作为其官方路由管理器,在构建单页面应用(SPA)时发挥关键作用,通过URL变化管理组件切换,实现无刷新过渡。本文将详细介绍Vue Router的基础概念、主要功能及使用步骤,帮助JavaWeb开发者快速掌握其工作原理及实践应用。
127 1
|
JSON JavaScript 前端开发
Javaweb中Vue指令的详细解析与应用
Vue指令提供了一种高效、声明式的编码方式,使得开发者可以更专注于数据和业务逻辑,而不是DOM操作的细节。通过熟练使用Vue指令,可以极大地提高开发效率和项目的可维护性。
123 3
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
465 2
|
JavaScript 前端开发 UED
Javaweb中Vue指令的详细解析与应用
Vue指令是Vue框架中非常强大的特性之一,它提供了一种简洁、高效的方式来增强HTML元素和组件的功能。通过合理使用这些指令,可以使你的JavaWeb应用更加响应用户的操作,提高交互性和用户体验。而且,通过创建自定义指令,你可以进一步扩展Vue的功能,使其更贴合你的应用需求。
138 1