同步操作将从 皇叔/elegent-builder(代码生成器) 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package database;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Properties;import entity.Column;import entity.Table;/*** 黑马程序员代码生成器 V2.4** @author 传智播客研究院 刘皇叔**/public class Util {private String dbType;//数据库类型private String driverName;private String userName;private String passWord;private String url;private String dbName;//数据库名称private String ip;public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getDbType() {return dbType;}public void setDbType(String dbType) {this.dbType = dbType;}public String getDbName() {return dbName;}public void setDbName(String dbName) {this.dbName = dbName;}public String getDriverName() {return driverName;}public void setDriverName(String driverName) {this.driverName = driverName;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}/**** @return* @throws ClassNotFoundException* @throws SQLException*/public List<String> getSchemas() throws ClassNotFoundException, SQLException{Class.forName(driverName);Connection connection = java.sql.DriverManager.getConnection(url, userName, passWord);DatabaseMetaData metaData = connection.getMetaData();ResultSet rs = metaData.getCatalogs();List<String> list=new ArrayList<String>();while(rs.next()){list.add( rs.getString(1));}rs.close();connection.close();return list;}/*** 获取表及字段信息* @param catalogName* @return* @throws ClassNotFoundException* @throws SQLException*/public List<Table> getDbInfo() throws ClassNotFoundException, SQLException{//加载转换器Map<String, String> convertMap = xml.XmlUtil.readNu("typeConverter.xml");Class.forName(driverName);Properties props =new Properties();props.put("remarksReporting","true");props.put("user", userName);props.put("password", passWord);if(dbName!=null ){url=url.replace("[db]", dbName);}if(ip!=null && !ip.equals("")){url=url.replace("[ip]", ip);}else{url=url.replace("[ip]", "127.0.0.1");}Connection connection = java.sql.DriverManager.getConnection(url, props);DatabaseMetaData metaData = connection.getMetaData();String schema=null;String catalog=null;//如果是oracle数据库if(dbType!=null && dbType.toUpperCase().indexOf("ORACLE")>=0){schema=userName.toUpperCase();catalog = connection.getCatalog();}ResultSet tablers = metaData.getTables(catalog, schema, null, new String[]{"TABLE"});List<Table> list=new ArrayList<Table>();while(tablers.next()){entity.Table table=new Table();String tableName=tablers.getString("TABLE_NAME");//如果为垃圾表if(tableName.indexOf("=")>=0 || tableName.indexOf("$")>=0){continue;}//判断 表名为全大写 ,则转换为小写if(tableName.toUpperCase().equals(tableName)){table.setName(tableName.toLowerCase());}else{table.setName(tableName);}table.setComment(tablers.getString("REMARKS"));//获得主键ResultSet primaryKeys = metaData.getPrimaryKeys(catalog, schema, tableName);List<String> keys=new ArrayList<String>();while(primaryKeys.next()){String keyname=primaryKeys.getString("COLUMN_NAME");//判断 表名为全大写 ,则转换为小写if(keyname.toUpperCase().equals(keyname)){keyname=keyname.toLowerCase();//转换为小写}keys.add(keyname);}System.out.println("信息:"+catalog+" "+schema+" "+tableName);//获得所有列ResultSet columnrs = metaData.getColumns(catalog, schema, tableName, null);List<Column> columnList=new ArrayList<Column>();while(columnrs.next()){Column column=new Column();String columnName= columnrs.getString("COLUMN_NAME");//判断 表名为全大写 ,则转换为小写if(columnName.toUpperCase().equals(columnName)){columnName=columnName.toLowerCase();//转换为小写}column.setColumnName(columnName);String columnDbType = columnrs.getString("TYPE_NAME");column.setColumnDbType(columnDbType);//数据库原始类型String typeName = convertMap.get(columnDbType);//获取转换后的类型if(typeName==null){typeName=columnrs.getString("TYPE_NAME");}column.setColumnType(typeName);String remarks = columnrs.getString("REMARKS");//备注if(remarks==null){remarks=columnName;}column.setColumnComment(remarks);if(keys.contains(columnName))//如果该列是主键{column.setColumnKey("PRI");table.setKey(column.getColumnName());}else{column.setColumnKey("");}int decimal_digits =columnrs.getInt("DECIMAL_DIGITS");//小数位数if(decimal_digits>0){column.setColumnType("Double");//如果是小数则设置为Double}column.setDecimal_digits(decimal_digits);//column.setColums_size(columnrs.getInt("COLUMN_SIZE"));//字段长度columnList.add(column);}columnrs.close();table.setColumns(columnList);list.add(table );}tablers.close();connection.close();return list;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。