代码生成工具原理解析
程序开发
2023-09-04 09:46:55
前几天在论坛看到jeecg,是个代码自动生成框架,感觉挺有意思的,就花了点时间研究了下。
代码都能自动生成,可能大家会觉得这肯定是个很复杂的东西,其实非也,我给大家稍微点一下 ,相信大家就能明白其中的密码
大家先想想自己本来是如何写代码的? 先根据表字段先实体类,在写增删改查dao,然后根据业务写service层,最后写action和前台页面。也就是说我只要知道了一个表的结构增删改查的前后台页面的代码格式就是固定的,剩下的就是复杂的业务。而代码生成工具的目标就是自动生成那部分固定格式的增删改查的代码。
根据以上分析,我们可以把代码生成分为2个步骤:
1、读取数据库表信息,主要包括表名、字段名称、字段类型、主键、外键等。技术:java.sql.DatabaseMetaData
2、编写模板文件,根据模板文件和读出的数据库表数据生成相应的代码。技术:freemarker
下面是一个简单是实例:自动生成一个实体类
package db;import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;import org.apache.commons.io.FileUtils;import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;public class CodeGenerator {/*** 代码工厂实例* @param args*/public static void main(String[] args) {String dataBase = "hibernate"; // 数据库名String username = "root"; // 数据库用户名String password = "root"; // 数据库密码String tableName = "my_user_role"; // 表名String pack = "com.wj.model"; // 包名try {// 获取数据Collection
运行后可以从下图看到在src下自动生成了MyUserRole.java 类
实例下载:http://download.csdn.net/detail/tianma630/5534811
标签:
上一篇:
nginx配置项目静态文件分离
下一篇:
相关文章
-
无相关信息