自动成hbm文件和Pojo Bean文件的工具类
输入
1,tableName
2,beanName
3,pkgName
4,root_path
5,pkColumn
输出
1、生成xxx.hbm.xml文件
2、生成xxx.java文件
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Types;
import java.util.Date;
import java.util.List;
public class Table2BeanUtil
{
public static String tableName = "vmm_ag";
public static String beanName="AG";
public static String pkgName = "com.utstar.nms.vmm.spring.domain";
public static String root_path = "src/com/utstar/nms/vmm/spring/domain/";
public static String pkColumn=DatabaseUtil.getPKColumn(tableName);
public Table2BeanUtil(String tableName,String beanName,String pkgName,String rootPath,String pkColumn)
{
this.tableName = tableName;
this.beanName=beanName;
this.pkgName = pkgName;
this.root_path = rootPath;
this.pkColumn=pkColumn;
}
public static void main(String[] args) throws Exception
{
String tableName = "vmm_ag";
String beanName="AG";
String pkgName = "com.utstar.nms.vmm.spring.domain";
String root_path = "src/com/utstar/nms/vmm/spring/domain/";
String pkColumn="SN";
Table2BeanUtil aTable2BeanUtil = new Table2BeanUtil( tableName, beanName, pkgName, root_path, pkColumn);
aTable2BeanUtil.genBeanAndHbmFile();
}
//String tableName,String beanName,String pkgName,String root_path
public void genBeanAndHbmFile() throws Exception
{
System.out.println("root_path:"+root_path);
//new a database connection
DatabaseUtil aDatabaseUtil = new DatabaseUtil();
Connection conn = aDatabaseUtil.getConnection();
Statement st = conn.createStatement();
String sql = "select * from " + tableName + " where 1 = 2";
ResultSet rs = st.executeQuery(sql);
//get the metaData from ResultSet
ResultSetMetaData rsMetaData = rs.getMetaData();
String hbmFile = getHbmFile(root_path);
String beanFile = getBeanFile(root_path);
genBeanFile(beanFile,rsMetaData);
genHbmFile(hbmFile,rsMetaData);
rs.close();
conn.close();
System.out.println("output hbm file: " + hbmFile);
System.out.println("output bean file: " + beanFile);
}
public void genBeanFile(String beanFile,ResultSetMetaData rsMetaData) throws Exception
{
FileWriter outBean = new FileWriter(beanFile);
outBean.write("package " + pkgName + ";");
outBean.write(" /n");
outBean.write(" /n");
outBean.write("public class " + beanName);
outBean.write(" /n");
outBean.write("{");
outBean.write(" /n");
for (int iCol = 1; iCol <= rsMetaData.getColumnCount(); iCol++)
{
String colName = rsMetaData.getColumnName(iCol);
int colType = rsMetaData.getColumnType(iCol);
String propName = getPropertyName(colName);
String javaType = getJavaType(colType).getSimpleName();
outBean.write(" private " + javaType + " " + propName + "; ");
outBean.write(" /n");
}
outBean.write(" /n");
for(int iCol = 1; iCol <= rsMetaData.getColumnCount(); iCol++)
{
String colName = rsMetaData.getColumnName(iCol);
int colType = rsMetaData.getColumnType(iCol);
String propName = getPropertyName(colName);
String javaType = getJavaType(colType).getSimpleName();
outBean.write("public " + javaType + " " + getGetterMethod(propName) + "()");
outBean.write(" /n");
outBean.write(" {");
outBean.write(" /n");
outBean.write(" return this." + propName + ";");
outBean.write(" /n");
outBean.write(" }");
outBean.write(" /n");
outBean.write(" /n");
outBean.write("public void " + getSetterMethod(propName) + "(" + javaType + " " + propName + ")");
outBean.write(" /n");
outBean.write(" {");
outBean.write(" /n");
outBean.write(" this." + propName + " = " + propName + ";");
outBean.write(" /n");
outBean.write(" }");
outBean.write(" /n");
outBean.write(" ");
}
outBean.write(" /n");
outBean.write("}");
outBean.flush();
outBean.close();
}
public void genHbmFile(String hbmFile,ResultSetMetaData rsMetaData) throws Exception
{
FileWriter outHbm = new FileWriter(hbmFile);
outHbm.write("<?xml version=/"1.0/" encoding=/"UTF-8/"?> ");
outHbm.write(" /n");
outHbm.write("<!DOCTYPE hibernate-mapping PUBLIC");
outHbm.write(" /"-//Hibernate/Hibernate Mapping DTD 3.0//EN/"");
outHbm.write(" /n");
outHbm.write(" /"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd/">");
outHbm.write(" /n /n");
outHbm.write("<hibernate-mapping>");
outHbm.write(" /n");
outHbm.write("<class name=/"" + pkgName + "." + beanName +"/""+ " table=/"" + tableName + "/">");
outHbm.write(" /n");
for(int iCol = 1; iCol <= rsMetaData.getColumnCount(); iCol++)
{
String colName = rsMetaData.getColumnName(iCol);
int colType = rsMetaData.getColumnType(iCol);
String propName = getPropertyName(colName);
String javaType = getJavaType(colType).getSimpleName();
if(pkColumn.equalsIgnoreCase(colName))
{
outHbm.write(" <id name=/"" + propName + "/" column=/"" + colName + "/"/>");
}
else
{
outHbm.write(" <property name=/"" + propName + "/" column=/"" + colName + "/"/>");
}
outHbm.write(" /n");
}
outHbm.write(" </class>");
outHbm.write(" /n");
outHbm.write("</hibernate-mapping>");
outHbm.flush();
outHbm.close();
}
private static String getHbmFile(String root_path)
{
return root_path + beanName + ".hbm.xml";
}
private static String getBeanFile(String root_path)
{
return root_path + beanName + ".java";
}
private static String getBeanName(String tableName)
{
String[] segs = tableName.split("_");
String beanName = "";
for(int i = 0; i < segs.length; i++)
{
beanName += segs[i].substring(0, 1).toUpperCase() + segs[i].substring(1, segs[i].length()).toLowerCase();
}
return beanName;
}
private static String getPropertyName(String col_name)
{
String[] segs = col_name.split("_");
String propName = "";
for(int i = 0; i < segs.length; i++)
{
if(i == 0)
propName += segs[i].toLowerCase();
else
propName += segs[i].substring(0, 1).toUpperCase() + segs[i].substring(1, segs[i].length()).toLowerCase();
}
return propName;
}
private static String getGetterMethod(String prop_name)
{
return "get" + prop_name.substring(0, 1).toUpperCase() + prop_name.substring(1, prop_name.length());
}
private static String getSetterMethod(String prop_name)
{
return "set" + prop_name.substring(0, 1).toUpperCase() + prop_name.substring(1, prop_name.length());
}
@SuppressWarnings("unchecked")
private static Class getJavaType(int colType)
{
switch(colType)
{
case Types.BIT:
case Types.TINYINT:
case Types.SMALLINT:
return Short.class;
case Types.INTEGER:
return Integer.class;
case Types.BIGINT:
case Types.NUMERIC:
return Long.class;
case Types.CHAR:
case Types.VARCHAR:
case Types.CLOB:
case Types.LONGVARCHAR:
return String.class;
case Types.FLOAT:
return Float.class;
case Types.DOUBLE:
return Double.class;
case Types.DATE:
case Types.TIME:
case Types.TIMESTAMP:
return Date.class;
default:
return Object.class;
}
}
}