package com.zt.generator.data; 
 | 
  
 | 
/** 
 | 
 * Created by acer on 14-2-9. 
 | 
 */ 
 | 
  
 | 
import org.springframework.jdbc.core.JdbcTemplate; 
 | 
  
 | 
import java.sql.*; 
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
public class DBUtil { 
 | 
  
 | 
    public static boolean findTable(Connection conn, String tableName) { 
 | 
        try { 
 | 
            DatabaseMetaData dbm = conn.getMetaData(); 
 | 
            String currentCatalog = conn.getCatalog(); 
 | 
            String[] types = {"TABLE"}; 
 | 
            ResultSet tabs = dbm.getTables(currentCatalog, null, tableName, types); 
 | 
            if (tabs.next()) { 
 | 
                return true; 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return false; 
 | 
    } 
 | 
    public static DataTable getTableList(Connection conn, boolean closeFlag) { 
 | 
        try { 
 | 
        DatabaseMetaData dbm = conn.getMetaData(); 
 | 
        String currentCatalog = conn.getCatalog(); 
 | 
        ResultSet rs = dbm.getTables(currentCatalog, null, null, null); 
 | 
        DataTable dt = new DataTable(rs); 
 | 
        return dt; 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } finally { 
 | 
            if (closeFlag && conn != null) { 
 | 
                try { 
 | 
                    conn.close(); 
 | 
                } catch (SQLException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static DataTable getColumnInfo(Connection conn, String tableName, boolean closeFlag) { 
 | 
        try { 
 | 
            DatabaseMetaData dbm = conn.getMetaData(); 
 | 
            String currentCatalog = conn.getCatalog(); 
 | 
  
 | 
            Map<String, String> mapDict = new HashMap<>(); 
 | 
            String sql = "SELECT * FROM sys_dict_type WHERE is_delete=0"; 
 | 
            PreparedStatement preparedStatement = conn.prepareStatement(sql); 
 | 
            ResultSet resultSet = preparedStatement.executeQuery(); 
 | 
            while (resultSet.next()) { 
 | 
                String dictType = resultSet.getString("DICT_TYPE"); 
 | 
                mapDict.put(dictType, dictType); 
 | 
            } 
 | 
  
 | 
            ResultSet rs = dbm.getColumns(currentCatalog, null, tableName, null); 
 | 
            DataTable dt = new DataTable(rs); 
 | 
            DataTable keyDt = new DataTable(rs); 
 | 
            Map map = keyDt.toMap("Column_Name", "PK_Name"); 
 | 
            dt.insertColumn("isKey"); 
 | 
            dt.insertColumn("dictType"); 
 | 
            for (int i = 0; i < dt.getRowCount(); i++) { 
 | 
                DataRow dr = dt.getDataRow(i); 
 | 
                String columnName = dr.getString("Column_Name"); 
 | 
                if (map.containsKey(columnName)) { 
 | 
                    dr.set("isKey", "Y"); 
 | 
                } else { 
 | 
                    dr.set("isKey", "N"); 
 | 
                } 
 | 
                if (mapDict.get(columnName) != null) { 
 | 
                    dr.set("dictType", columnName); 
 | 
                } else { 
 | 
                    dr.set("dictType", ""); 
 | 
                } 
 | 
            } 
 | 
            return dt; 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } finally { 
 | 
            if (closeFlag && conn != null) { 
 | 
                try { 
 | 
                    conn.close(); 
 | 
                } catch (SQLException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static DataTable getSQLTypes(Connection conn, boolean closeFlag) { 
 | 
        try { 
 | 
            DatabaseMetaData dbm = conn.getMetaData(); 
 | 
            ResultSet rs = dbm.getTypeInfo(); 
 | 
            DataTable dt = new DataTable(rs); 
 | 
            return dt; 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } finally { 
 | 
            if (closeFlag && conn != null) { 
 | 
                try { 
 | 
                    conn.close(); 
 | 
                } catch (SQLException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static String getDbType(JdbcTemplate jdbcTemplate) { 
 | 
        String DBType = null; 
 | 
        Connection conn = null; 
 | 
        try { 
 | 
            conn = jdbcTemplate.getDataSource().getConnection(); 
 | 
            DatabaseMetaData md = conn.getMetaData(); 
 | 
            DBType = md.getDatabaseProductName().toUpperCase(); 
 | 
        } catch (SQLException e) { 
 | 
            e.printStackTrace(); 
 | 
        } finally { 
 | 
            if (conn != null) { 
 | 
                try { 
 | 
                    conn.close(); 
 | 
                } catch (SQLException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return DBType; 
 | 
    } 
 | 
  
 | 
    public static String columnNameParser(String name) { 
 | 
        String newNames = ""; 
 | 
        if (name.indexOf("_") > 0) { 
 | 
            // 驼峰法则 
 | 
            String[] names = name.toLowerCase().split("_"); 
 | 
            newNames = names[0]; 
 | 
            for (int j = 1; j < names.length; j++) { 
 | 
                newNames += names[j].substring(0, 1).toUpperCase() + names[j].substring(1); 
 | 
            } 
 | 
        } else if (name.equals(name.toUpperCase())) { 
 | 
            newNames = name.toLowerCase(); 
 | 
        } else { 
 | 
            newNames = name; 
 | 
        } 
 | 
        return newNames; 
 | 
    } 
 | 
} 
 |