package nh;
import java.sql.*;
import java.util.*;
import java.io.*;
class EntityBean_Creator
{
public static void main(String[] args) throws Exception
{
DB db=new DB();
db.dbStart("xuexiao","xx","xx");
Vector v_tables=db.listTables();
for(int i=0;i<v_tables.size();i++)
{
String tableName=(String)v_tables.get(i);
ARecorderBeanCreator ar=new ARecorderBeanCreator( tableName ,"turing" );
ar.createARecorderBean( db.listColumns(tableName) );
ATableBeanCreator at=new ATableBeanCreator( tableName ,"turing" );
at.createATableBean( db.listColumns(tableName) );
}
db.dbClose() ;
}
}
class DB
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public void dbStart(String DatabaseName,String user,String password ) throws Exception
{
String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(sDBDriver);
String sConnStr = "jdbc:microsoft:sqlserver://192.168.0.22;DatabaseName="+DatabaseName;
conn = DriverManager.getConnection(sConnStr,user,password);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_READ_ONLY);
}
public void dbClose() throws Exception
{
stmt.close();
conn.close();
}
public Vector listTables() throws Exception
{
Vector v=new Vector();
DatabaseMetaData dbmd = conn.getMetaData();
String[] types = {"TABLE"};
ResultSet resultSet = dbmd.getTables(null, null, "%", types);
while (resultSet.next())
{
String tableName = resultSet.getString(3);
if(tableName.equals("dtproperties")==false)
{
v.add(tableName);
}
}
return v;
}
public Vector listColumns(String tableName) throws Exception
{
Vector v=new Vector();
String sql="select * from "+tableName;
ResultSet rs=stmt.executeQuery(sql);
ResultSetMetaData rmt;
rmt = rs.getMetaData() ;
int n=0;
for(int i=1;i<=rmt.getColumnCount();i++)
{
//System.out.println(rmt.getColumnName(i)+","+rmt.getColumnTypeName(i) );
Column c=new Column(rmt.getColumnName(i), rmt.getColumnTypeName(i));
v.add(c);
if(c.isIdentity) n++;
}
if(n==0)
{
System.out.println(tableName+"未设主键");
System.exit(0);
}
return v;
}
}
class Column
{
String name;
String type;
boolean isIdentity;
Column(String name, String type)
{
this.name=name;
int pos=type.indexOf("identity");
if(pos<0)
{
this.type=type;
this.isIdentity=false;
}
else
{
this.type=type.substring(0,pos-1);
this.isIdentity=true;
}
}
void print()
{
System.out.print(name+"\t");
System.out.print(type+"\t");
System.out.println(isIdentity);
}
}
class ARecorderBeanCreator
{
Hashtable ht_columnType;
Hashtable ht_default;
String tableName;
String packageName;
ARecorderBeanCreator(String tableName,String packageName)
{
this.tableName=tableName;
this.packageName=packageName;
ht_columnType=new Hashtable();
ht_columnType.put("char","String");
ht_columnType.put("varchar","String");
ht_columnType.put("datetime","String");
ht_columnType.put("int","int");
ht_columnType.put("bit","boolean");
ht_columnType.put("decimal","double");
ht_default=new Hashtable();
ht_default.put("char","null");
ht_default.put("varchar","null");
ht_default.put("datetime","null");
ht_default.put("int","0");
ht_default.put("bit","true");
ht_default.put("decimal","0.0");
}
String abc2Abc(String abc)
{
return abc.substring(0,1).toUpperCase()+abc.substring(1);
}
void createARecorderBean(Vector v_col) throws Exception
{
BufferedWriter out = new BufferedWriter(new FileWriter("com/"+tableName+".java"));
out.write("package "+packageName+";\n");
out.write("public class "+tableName+"\n{\n");
createColumnDeclare(v_col,out);
out.write("\n\t public "+tableName+"()\n\t {\n");
createDefaultValue(v_col,out);
out.write("\t }\n");
createSetGet(v_col,out);
out.write("}\n");
out.close();
}
void createDefaultValue(Vector v_col,BufferedWriter out) throws Exception
{
for(int i=0;i<v_col.size();i++)
{
Column col=(Column)v_col.get(i);
out.write("\t\t "+col.name +"="+ht_default.get(col.type)+";\n");
}
}
void createSetGet(Vector v_col,BufferedWriter out) throws Exception
{
for(int i=0;i<v_col.size();i++)
{
Column col=(Column)v_col.get(i);
out.write("\n");
out.write("\t public void set"+abc2Abc(col.name)+"("+ht_columnType.get(col.type)+" "+col.name+")\n");
out.write("\t {\n");
out.write("\t\t this."+col.name+"="+col.name+";\n");
out.write("\t }\n\n");
out.write("\t public "+ht_columnType.get(col.type)+" get"+abc2Abc(col.name)+"()\n");
out.write("\t {\n");
out.write("\t return "+col.name+";\n");
out.write("\t }\n");
}
}
void createColumnDeclare(Vector v_col,BufferedWriter out) throws Exception
{
for(int i=0;i<v_col.size();i++)
{
Column col=(Column)v_col.get(i);
out.write("\t private "+ht_columnType.get(col.type)+" "+col.name +";\n");
}
}
}
class ATableBeanCreator extends ARecorderBeanCreator
{
ATableBeanCreator(String tableName,String packageName)
{
super(tableName , packageName );
}
Column getTableIdentity(Vector v_col)
{
for(int i=0;i<v_col.size();i++)
{
Column col=(Column)v_col.get(i);
if(col.isIdentity)
return col;
}
return null;
}
void createATableBean(Vector v_col) throws Exception
{
BufferedWriter out = new BufferedWriter(new FileWriter("com/"+tableName+"Biao.java"));
out.write("package "+packageName+";\n\n");
out.write("import java.sql.*;\n");
out.write("import java.util.*;\n");
out.write("import "+packageName+".Dao;\n\n");
out.write("public class "+tableName+"Biao\n{\n");
createColumnDeclare(v_col,out);
out.write("\t private Dao dao;\n");
out.write("\n\t public "+tableName+"Biao()\n\t {\n");
createDefaultValue(v_col,out);
out.write("\t\t dao=new Dao();\n");
out.write("\t }\n\n");
createQueryFunction( v_col, out);
out.write("\n");
createQueryOneFunction( v_col, out);
out.write("\n");
createAddFunction( v_col, out);
out.write("\n");
createDeleteFunction( v_col, out);
out.write("\n");
createUpdateFunction( v_col, out);
out.write("\n");
createSetGet(v_col,out);
out.write("}\n");
out.close();
}
void createQueryFunction(Vector v_col,BufferedWriter out) throws Exception
{
Column col_identity=getTableIdentity(v_col);
out.write("\t public ArrayList query(String tiaoJian)\n");
out.write("\t {\n");
out.write("\t\t String sql=\"select * from "+tableName+" where \"+tiaoJian ;\n");
out.write("\t\t ResultSet rs=dao.query(sql);\n");
out.write("\t\t ArrayList al=new ArrayList(); \n");
out.write("\t\t try\n");
out.write("\t\t {\n");
out.write("\t\t\t while(rs.next())\n");
out.write("\t\t\t {\n");
out.write("\t\t\t\t "+tableName +" a=new "+tableName +"();\n");
for(int i=0;i<v_col.size();i++)
{
Column col=(Column)v_col.get(i);
out.write("\t\t\t\t a.set"+ abc2Abc(col.name)+"(rs.get"+abc2Abc((String)ht_columnType.get(col.type)) +"(\""+col.name+"\"));\n");
}
out.write("\t\t\t\t al.add(a);\n");
out.write("\t\t\t }\n");
out.write("\t\t }\n");
out.write("\t\t catch(Exception e){}\n");
out.write("\t\t return al; \n");
out.write("\t } \n");
}
void createQueryOneFunction(Vector v_col,BufferedWriter out) throws Exception
{
Column col_identity=getTableIdentity(v_col);
out.write("\t public "
评论0