import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 根据表生成Entity文件
*
* 修改test_Table()方法中的参数值,即可执行main方法获得想要的结果
*
* 生成文件后导入需要的包
* 依赖包:mysql数据库驱动包
* 生成其他数据库类型的表需要更换驱动类并略做数据类型转换的修改即可
*
* 注意:数据库数据类型只包括了常用的几种,其他数据类型还需要在完善,请添加‘ftype’该数组变量的值
*
*/
public class TableToEntity {
public static void main(String args[]) {
test_Table();
}
/**
* 设置参数--需要修改
*/
public static void test_Table() {
String tableName = "tableName";//需要转换的表
String host = "127.0.0.1";//数据库host
String port = "3306";//数据库端口
String database = "databaseName";//数据库名
String username = "root";//数据库用户名
String password = "root";//数据库用密码
String path = "F:/file/";//生成文件存放目录,不包括文件名,文件名自动命名为 '表名.java,表名Mapper.xml,表名Dao.java' 首字母大写
String dao_package = "com.test.dao.";//dao的包路径
String entity_package = "com.test.entity.";//entity的包路径
//生成entity文件
getTableToEntityFile(tableName, host, port, database, username, password, entity_package,
path);
//生成ResultMap文件
getTableToResultMap(tableName, host, port, database, username, password, dao_package,
entity_package, path);
//生成Dao文件
getResultMapToDao(tableName, dao_package, entity_package, path);
}
/**
* 根据表生成Entity文件
*/
public static void getTableToEntityFile(String tableName, String host, String port,
String database, String username, String password,
String entity_package, String path) {
String strforname = "com.mysql.jdbc.Driver";
String strurl = "jdbc:mysql://" + host + ":" + port + "/" + database
+ "?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull";
//需要替换的数据类型,待完善
String ftype[][] = new String[][] { { "tinyint unsigned", "Integer" },
{ "tinyint", "Integer" }, { "int unsigned", "Integer" }, { "int", "Integer" },
{ "smallint unsigned", "Integer" }, { "smallint", "Integer" },
{ "varchar", "String" }, { "char", "String" }, { "longtext", "String" },
{ "text", "String" }, { "decimal unsigned", "BigDecimal" },
{ "decimal", "BigDecimal" }, { "datetime", "String" }, { "date", "String" },
{ "timestamp", "String" }, { "unsigned", "" } };
//如果包路径是以“.”结尾的要去掉
entity_package = entity_package == null ? "" : entity_package;
entity_package = entity_package.length() > 0 && entity_package.endsWith(".") ? entity_package
.substring(0, entity_package.length() - 1) : entity_package;
System.out.println("==============================");
System.out.println("正在生成。。。");
String sql = "SELECT * FROM " + tableName + " limit 0";
List<Map<String, String>> list = queryFieldList(sql, strforname, strurl, username, password);
//模板字符串
String propertystr = "\tprivate #fieldtype# #fieldname#;\n";
String methodget1 = "\tpublic #fieldtype# get#fieldname1#() {\n";
String methodget2 = "\t\treturn #fieldname#;\n";
String methodget3 = "\t}\n";
String methodset1 = "\tpublic void set#fieldname1#(#fieldtype# #fieldname#) {\n";
String methodset2 = "\t\tthis.#fieldname# = #fieldname#;\n";
String methodset3 = "\t}\n";
String classstrstart = "package "
+ entity_package
+ ";\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\n\npublic class #tablename# implements Serializable {\n";
String classstrend = "}";
String class_pro = "";//类拼接
if (list != null && list.size() > 0) {
for (Map<String, String> map : list) {
for (Ob
Java工具类_表结构自动生成对应的实体类、Mapper.xml文件、Dao类
最新推荐文章于 2024-07-18 14:45:44 发布
这个Java工具类能够根据指定的表结构,自动生成对应的实体类(Entity)、Mapper.xml配置文件和Dao接口。用户只需要修改test_Table()方法中的参数,设置数据库连接信息和生成文件的路径,工具将自动完成文件的创建。目前,该工具支持常见的MySQL数据类型,但仍有待完善其他数据类型的转换。生成的文件遵循特定的命名规范,并且包含了属性、getter/setter方法以及MyBatis的ResultMap和SQL操作配置。
摘要由CSDN通过智能技术生成