DBMetadata

来源:互联网 发布:图书软件下载 编辑:程序博客网 时间:2024/05/24 06:01






import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;


import com.mysql.jdbc.Connection;
import com.mysql.jdbc.DatabaseMetaData;


public class DBMetadata {


/*
* private String url="jdbc:mysql://localhost:3306/test"; private String
* username="root"; private String password="root";
*/


public static void main(String args[]) {


String tableName="t_xtgl_user";






String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";





url = "jdbc:mysql://localhost:3306/test";
username = "root";
password = "root";




Map<String,Object> container=new HashMap<String,Object>();

getTableColumnMap(url,username,password,container);

List<String> column=new ArrayList<String>();
List<String> camelColumn=new ArrayList<String>();

getColumnAndCamelColumn(container,tableName,column,camelColumn);









select(column,camelColumn);

where(column,camelColumn);

insert(column,camelColumn);

values(column,camelColumn);

update(column,camelColumn);

bean(column,camelColumn);


others();












}



static void getColumnAndCamelColumn(Map<String,Object> container,
String tableName,
List<String> columnList,
List<String> camelColumnList){

Set<String> keySet=container.keySet();

if(null != tableName && !"".equals(tableName)){


for(String key:keySet){

if(key.equals(tableName)){
List<String> tableColumnList=(List<String>) container.get(tableName);

for(String tableColumn:tableColumnList){

columnList.add(tableColumn);

camelColumnList.add(columnToCamelColumn(tableColumn));


}



}


}

}else{





}

}




static String columnToCamelColumn(String column){
String camelColumn=null;

String underscore="_";
int i = column.indexOf(underscore);
while (i > -1) {


char upper = column.charAt(i + 1);


upper = (char) (upper - 32);
String s1 = column.substring(i, i + 2);
column = column.replace(s1, "_" + upper);


i = column.indexOf("_", i + 1);


}


camelColumn = column.replace("_", "");

return camelColumn;

}



//,List<String> columnList,List<String> camelColumnList

static void getTableColumnMap(String url,String username,String password
,Map<String,Object> container){

Connection connection = getConnection(url, username, password);


DatabaseMetaData databaseMetaData = getDatabaseMetaData(connection);


List<String> tables = new ArrayList<String>();
listingTables(databaseMetaData, tables);

//System.out.println(tables);




//connection.prepareStatement("");

/*Map<String,Object> container=new HashMap<String,Object>();*/

for(String table:tables){


List<String> columnList=new ArrayList<String>();
String tableNamePattern=table;
listingTableColumns(databaseMetaData,tableNamePattern,columnList);

container.put(table, columnList);

/* container.put("table", table);
container.put("columnList", columnList);*/
}



System.out.println(container);

closeConnection(connection);

}


static void sql(String tableName){



}








static void select(List<String> column,List<String> camelColumn){
section();
delimiter("select");
for(int i=0;i<column.size();i++){

System.out.println(column.get(i)+" as "+"\""+camelColumn.get(i)+"\",");

}

delimiter("select");
}



static void where(List<String> column,List<String> camelColumn){

section();
delimiter("where");
String ifStr="<if test=\"";
String ifStr1=" != null";
String ifStr2="\">";
String ifEnd="</if>";
String rn="\r\n";
String numSign="#";
String comma=",";
String leftBrace="{";
String rightBrace="}";

for(int i=0;i<column.size();i++){
String s="";

s=ifStr+camelColumn.get(i)+ifStr1+ifStr2;
System.out.println(s);
System.out.println(""+"AND "+column.get(i)+" = "+numSign+leftBrace+camelColumn.get(i)+rightBrace);
System.out.println(ifEnd);
}

delimiter("where");



}


static void insert(List<String> column,List<String> camelColumn){
section();
delimiter("insert");
String ifStr="<if test=\"";
String ifStr1=" != null";
String ifStr2="\">";
String ifEnd="</if>";
String rn="\r\n";
String numSign="#";
String comma=",";
String leftBrace="{";
String rightBrace="}";

for(int i=0;i<column.size();i++){
String s="";
s=ifStr+camelColumn.get(i)+ifStr1+ifStr2;
System.out.println(s);
System.out.println(""+column.get(i)+",");
System.out.println(ifEnd);
}

delimiter("insert");
}

static void values(List<String> column,List<String> camelColumn){
section();
delimiter("values");
String ifStr="<if test=\"";
String ifStr1=" != null";
String ifStr2="\">";
String ifEnd="</if>";
String rn="\r\n";
String numSign="#";
String comma=",";
String leftBrace="{";
String rightBrace="}";

for(int i=0;i<column.size();i++){
String s="";
s=ifStr+camelColumn.get(i)+ifStr1+ifStr2;
System.out.println(s);
System.out.println(""+numSign+leftBrace+camelColumn.get(i)+rightBrace+",");
System.out.println(ifEnd);
}

delimiter("values");
}

static void update(List<String> column,List<String> camelColumn){
section();

delimiter("update");
String ifStr="<if test=\"";
String ifStr1=" != null";
String ifStr2="\">";
String ifEnd="</if>";
String rn="\r\n";
String numSign="#";
String comma=",";
String leftBrace="{";
String rightBrace="}";
String space=" ";
String tab=" ";
String equal=" = ";

String set="set";


for(int i=0;i<column.size();i++){

String s="";

String s1="";
String s2="";

s+=ifStr+camelColumn.get(i)+ifStr1+ifStr2;
System.out.println(s);

s1+=tab+comma+column.get(i)+equal+numSign+leftBrace+camelColumn.get(i)+rightBrace;
System.out.println(s1);

s2=ifEnd;

System.out.println(s2);


}

delimiter("update");
}




static void bean(List<String> column,List<String> camelColumn){
section();

delimiter("bean");
for(int i=0;i<column.size();i++){

System.out.println("private String "+camelColumn.get(i)+";");


}


delimiter("bean");
}






static void others(){
section();
delimiter("others");
section(2);
System.out.println("System.out.println();");
section(2);
System.out.println("Number");
section(2);
System.out.println("Integer");
System.out.println("Long");
System.out.println("Float");
System.out.println("Double");
section(2);
System.out.println("String");

delimiter("others");
}


static void section(int n){
for(int i=0;i<n;i++){
System.out.println("");
}
}

static void section(){
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
}



static void delimiter(String s){

System.out.println(s+"-----------------------------");

}























static void listingTableColumns(DatabaseMetaData databaseMetaData,String tableNamePattern,List<String> columnList){
String   catalog           = null;
String   schemaPattern     = null;
//String   tableNamePattern  = "my_table";
String   columnNamePattern = null;




ResultSet result = null;
try {
result = databaseMetaData.getColumns(
   catalog, schemaPattern,  tableNamePattern, columnNamePattern);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


try {


/*ResultSetMetaData resultSetMetaData =result.getMetaData();

int columnCount=resultSetMetaData.getColumnCount();

for(int i=1;i<=columnCount;i++){

int columnType=resultSetMetaData.getColumnType(i);

String columnClassName=resultSetMetaData.getColumnClassName(i);

String columnLabel=resultSetMetaData.getColumnLabel(i);

String columnName=resultSetMetaData.getColumnName(i);

String columnTypeName=resultSetMetaData.getColumnTypeName(i);

System.out.println(columnType);

System.out.println(columnClassName);
System.out.println(columnLabel);
System.out.println(columnLabel);
System.out.println(columnName);
System.out.println(columnTypeName);

section();


}*/


while(result.next()){

   String columnName = result.getString(4);
   int    columnType = result.getInt(5);
   columnList.add(columnName);
   /*System.out.println(columnName);
   System.out.println(columnType);*/
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


static void listingTables(DatabaseMetaData databaseMetaData,
List<String> tables) {


String catalog = null;
String schemaPattern = null;
String tableNamePattern = null;
String[] types = null;


ResultSet result = null;
try {
result = databaseMetaData.getTables(catalog, schemaPattern,
tableNamePattern, types);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


try {
while (result.next()) {
String tableName = result.getString(3);
tables.add(tableName);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


static DatabaseMetaData getDatabaseMetaData(Connection connection) {


DatabaseMetaData databaseMetaData = null;
try {
databaseMetaData = (DatabaseMetaData) connection.getMetaData();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return databaseMetaData;


}


static Connection getConnection(String url, String username, String password) {


try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your MySQL JDBC Driver?");
e.printStackTrace();
}


//System.out.println("MySQL JDBC Driver Registered!");


Connection connection = null;


try {
connection = (Connection) DriverManager.getConnection(url,
username, password);


} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
}
return connection;
}


static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


}






0 0