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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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博客

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
Web App开发 SQL Java
javaweb实现分页(二)
javaweb实现分页(二)
23 1
|
5天前
|
SQL 关系型数据库 MySQL
javaweb实现分页查询(一)
javaweb实现分页查询(一)
20 0
|
5天前
|
SQL 关系型数据库 MySQL
javaweb中实现分页,持续更新……
javaweb中实现分页,持续更新……
24 1
|
5天前
|
JSON Java 应用服务中间件
JavaWeb项目之乱码问题及如何解决
JavaWeb项目之乱码问题及如何解决
|
5天前
|
Java Spring 容器
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
|
5天前
JavaWeb 开发之 ServletContext 的和使用
JavaWeb 开发之 ServletContext 的和使用
26 1
|
5天前
|
Java 程序员 应用服务中间件
JavaWeb之过滤器(Filter)与监听器(Listener)
本文介绍了JavaWeb中的过滤器(Filter)和监听器(Listener)概念及其使用。过滤器主要用于拦截和处理Web资源请求,如进行编码设置、权限验证等,它在Servlet之前和之后执行。监听器则监听域对象(如ServletRequest、HttpSession、ServletContext)状态变化,分为创建/销毁监听和属性变化监听。监听器在Web.xml中注册后会在相应事件发生时自动执行,例如用于统计网站访问人数或初始化配置。
|
5天前
|
JavaScript 前端开发
javaweb文件上传和下载
javaweb文件上传和下载
|
5天前
|
前端开发 NoSQL 应用服务中间件
javaweb单点登录的三种实现方式
javaweb单点登录的三种实现方式
44 0
|
5天前
|
SQL 前端开发 Java
Java后端进阶之路: JavaWeb(四)
Java后端进阶之路: JavaWeb
35 1