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