自己开发java代码生成工具

简介: 自己开发java代码生成工具

1. 背景


在公司做项目,特别是业务系统的时候,大量的表单和增删改查,而且后台Ui经常用一些easyui等jquery ui框架,数据库一张表对应一个domian.表字段对应domain的属性,也对应这前台js json等数据。这样后台代码和json都是有规律可循。大量的复制粘贴 很枯燥麻烦,因此决定做一个代码自动生成工具。


1. 界面



2.用到的技术与核心代码


2.1 jdbc DatabaseMetaData(连接数据库 读取表结构)




public Connection getConnection() {
/** 声明Connection连接对象 */
Connection conn = null;
try {
/** 使用Class.forName()方法自动创建这个驱动程序的实例且自动调用DriverManager来注册它 */
Class.forName(DB_DRIVER);
/** 通过DriverManager的getConnection()方法获取数据库连接 */
Properties props = new Properties();
props.put("user", DB_USERNAME);
props.put("password", DB_PASSWORD);
props.put("remarksReporting", "true");//设置能读取到 column comment
conn = DriverManager.getConnection(DB_URL, props);
} catch (Exception ex) {
pane.setText("<span style=\"color:red;\">error:" + ex.toString()
+ "查看控制台</span>");
ex.printStackTrace();
}
return conn;
}
public HashMap<String, Object> loadDbTableInfo(String table) {
HashMap<String, Object> root = new HashMap<String, Object>();
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
dbCon = new DBConnection(this.dbUrl, this.dbDriver, this.dbUser,
this.dbPwd, this.pane);
Connection con = dbCon.getConnection();
ResultSet rs;
try {
DatabaseMetaData dbmd = con.getMetaData();
rs = dbmd.getColumns(null, "%", table, "%");
while (rs.next()) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("COLUMN_NAME", rs.getString("COLUMN_NAME")
.toLowerCase());
map.put("REMARKS", rs.getString("REMARKS"));
map.put("TYPE_NAME", rs.getString("TYPE_NAME"));
list.add(map);
}
rs = dbmd.getTables(null, "%", table, new String[] { "TABLE" });
if (rs.next()) {
root.put("tableComment", rs.getString("REMARKS"));// table
// comment
}
root.put("list", list);
root.put("title", tableName);// tableName
root.put("domainName", domainName);
return root;
} catch (Exception e) {
pane.append("error:" + e.toString() + "查看控制台\n");
e.printStackTrace();
} finally {
dbCon.closeConnection(con);
}
return root;
}


2.2 freemarker (根据订制的模版生成 文件)



/**
* 初始化
*/
public void init() {
File file = new File("bin/resource/template");
cfg = new Configuration();
try {
cfg.setDirectoryForTemplateLoading(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
pane.append("error:" + e.toString() + "查看控制台\n");
}
}
/**
* 生成新文件
* 
* @param root
*            信息封装
* @param newFileName
*            新文件名字
* @param templeName
*            模版名字
* @param newFilePath
*            新文件路径
*/
public void startMake(HashMap<String, Object> root, String newFileName,
String templeName, String newFilePath) {
Template t;
try {
t = cfg.getTemplate(templeName);
Writer out = new OutputStreamWriter(new FileOutputStream(
newFilePath + "/" + newFileName), "utf-8");
t.process(root, out);
out.flush();
out.close();
pane.append(newFilePath + "/" + newFileName + "生成成功\n");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
pane.append("error:" + e.toString() + "查看控制台\n");
}
}
public void begin() {
HashMap<String, Object> root = this.loadDbTableInfo(tableName);
this.startMake(root, "I" + this.domainName + "Svc.java", "svc.ftl",
svcPath);// 生成svc文件
this.startMake(root, this.domainName + "Impl.java", "Impl.ftl",
implPath);// 生成Impl文件
this.startMake(root, this.domainName + "_Form.html", "Form.ftl",
pagesPath);// 生成form 页面
this.startMake(root, this.domainName + "_View.html", "View.ftl",
pagesPath);// 生成view 页面
this.startMake(root, this.domainName + ".html", "mainhtml.ftl",
pagesPath);// 生成main.html 页面
this.startMake(root, this.domainName + ".js", "js.ftl",
pagesPath);// 生成js 页面
}



2.3美化swing界面 substance 皮肤包

SubstanceLookAndFeel.setSkin(new CremeSkin());//substance skin


截图

image.png



下载连接 点击下载


相关文章
|
22天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
103 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
21 5
|
2天前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
20 4
|
2天前
|
SQL Java API
|
2天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
13 2
|
28天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
14天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
67 2
|
Java 开发工具 git
Java开发初级6.24.3
5.在Git使用过程中,进行Git配置的操作命令是哪个() A. config B. config -g C. config -a D. git config 相关知识点: 在git中,经常使用git config 命令用来配置git的配置文件,git配置级别主要有:仓库级别 local 【优先级最高】、用户级别 global【优先级次之】、系统级别 system【优先级最低】 正确答案:D 10.RDBMS是什么? A. Rela Database Management Systems B. Relational Database Management Systems C. Relation
145 0
|
SQL 前端开发 JavaScript
Java开发初级6.24.2
3.Java网站src/main/java目录保存的是什么资源? A. Java源代码文件 B. 测试代码 C. JavaScript、CSS等文件 D. 图片资源 正确答案:A 4.什么是索引Index? A. SQL数据库里的表管理工具 B. SQL数据库里的查询工具 C. SQL数据库里的目录工具 D. SQL数据库用来加速数据查询的特殊的数据结构 正确答案:D
152 0