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();
}
}
}
}