Statement st = con.createStatement();
st.executeUpdate(sql.toString());
st.close();
// 建索引
checkCreateIndex(con, tableName, clazz);
}
// TODO 数据库连接方面需要改进
private static Connection getDBConnection(String driver, String urlDB, String user, String pwd) throws Exception {
// 连接MYSQL数据库
Class.forName(driver);
Connection conn = DriverManager.getConnection(urlDB, user, pwd);
return conn;
}
/**
* 根据配置源文件夹检查建数据表
*/
public void genDB(Connection conn) {
try {
// 获取源文件夹下的所有类
Set
// 遍历所有类,取出有注解的生成实体类
for(Class< > clazz : sources) {
// 过滤没有EntityConfig注解的类, 并建表
if(clazz.isAnnotationPresent(EntityConfig.class)) {
checkAndCreat(clazz, conn);
}
}
// 关闭连接
conn.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 检查并建表或更新表结构
* @param clazz
* @throws Exception
*/
public void checkAndCreat(Class< > clazz, Connection conn) throws Exception {
// 获取表的信息
String catalog = null;
String schema = "%";
String tableName = GenUtils.getTableName(clazz);
String[] types = new String[] { "TABLE" };
DatabaseMetaData dBMetaData = conn.getMetaData();
// 从databaseMetaData获取表信息
ResultSet tableSet = dBMetaData.getTables(catalog, schema, tableName, types);
// 如果表不存在, 则建表
if (!tableSet.next()) {
createTable(conn, tableName, clazz);
} else { //表存在, 则更新表
updateTable(conn, tableName, clazz);
}
// 关闭数据库连接
tableSet.close();
}
public static void main(String[] args) throws Exception {
args = new String[] {"com.test.testentity"};
String sourceDir = args[0];
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/game";
String user = "root";
String pwd = "";
Connection conn = getDBConnection(driver, url, user, pwd);
GenDB db = new GenDB(sourceDir);
db.genDB(conn);
}
}
package com.test.common;
import static com.test.common.EntityConfigData.DEFAULTS;
import static com.test.common.EntityConfigData.INDEX;
import static com.test.common.EntityConfigData.LENGTH;
import static com.test.common.EntityConfigData.NULLABLE;
import static com.test.common.EntityConfigData.TYPE;
import static com.test.common.EntityConfigData.TYPE_DEFUALT_INT;
import static com.test.common.EntityConfigData.TYPE_DEFUALT_LONG;
import static com.test.common.EntityConfigData.TYPE_DEFUALT_STRING;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.test.PackageClass;
/**
* 自动建表建索