/** * 获取数据库中列的描述 * * @param tableName * @param session * @return * @throws SQLException */ public static Map<String, ColumnMeta> getColumnMetadataFormDataBase( String schemaName, String tableName, Session session) throws SQLException { Connection conn = SessionFactoryUtils.getDataSource(session.getSessionFactory()).getConnection(); DatabaseMetaData dbMetaData = conn.getMetaData(); ResultSet rs = dbMetaData.getColumns(null, schemaName, tableName, "%"); ColumnMeta columnMeta; Map<String, ColumnMeta> columnMap = new HashMap<String, ColumnMeta>(); while (rs.next()) { columnMeta = new ColumnMeta(); columnMeta.setTableName(rs.getString("COLUMN_NAME").toLowerCase()); columnMeta.setColumnName(rs.getString("COLUMN_NAME").toLowerCase()); columnMeta.setColunmType( dbTableHandle.getMatchClassTypeByDataType( rs.getString("TYPE_NAME"), rs.getInt("DECIMAL_DIGITS"))); columnMeta.setColumnSize(rs.getInt("COLUMN_SIZE")); columnMeta.setDecimalDigits(rs.getInt("DECIMAL_DIGITS")); columnMeta.setIsNullable(rs.getInt("NULLABLE") == 1 ? "Y" : "N"); columnMeta.setComment(rs.getString("REMARKS")); columnMeta.setFieldDefault( judgeIsNumber(rs.getString("COLUMN_DEF")) == null ? "" : judgeIsNumber(rs.getString("COLUMN_DEF"))); logger.info( "getColumnMetadataFormDataBase --->COLUMN_NAME:" + rs.getString("COLUMN_NAME") + " TYPE_NAME :" + rs.getString("TYPE_NAME") + " DECIMAL_DIGITS:" + rs.getInt("DECIMAL_DIGITS") + " COLUMN_SIZE:" + rs.getInt("COLUMN_SIZE")); columnMap.put(rs.getString("COLUMN_NAME").toLowerCase(), columnMeta); } return columnMap; }