<br>import org.springframework.stereotype.Service;<br>import sailingdscg_ws.sailingdscg_ws.entity.TableField;<br>import sailingdscg_ws.sailingdscg_ws.service.IOracleTablesUtils;<br><br>import javax.servlet.ServletException;<br>import java.io.IOException;<br>import java.sql.*;<br>import java.util.ArrayList;<br>import java.util.HashMap;<br>import java.util.List;<br>import java.util.Map;<br><br>@Service<br>public class OracleTablesUtils implements IOracleTablesUtils {<br><br> private static final long serialVersionUID = 1L;<br> Connection conn = null;<br> Statement st = null;<br><br><br> //获取conn<br> @Override<br> public Boolean init(String url, String username, String password) throws ServletException {<br> try {<br> Class.forName("com.mysql.jdbc.Driver").newInstance();<br> conn = java.sql.DriverManager.getConnection(url, username, password);<br> } catch (InstantiationException e) {<br> e.printStackTrace();<br> } catch (IllegalAccessException e) {<br> e.printStackTrace();<br> } catch (ClassNotFoundException e) {<br> e.printStackTrace();<br> } catch (SQLException e) {<br> e.printStackTrace();<br> }<br> if (conn != null) {<br> return true;<br> } else {<br> return false;<br> }<br> }<br><br> @Override<br> public Map<String, List<TableField>> getTables() throws ServletException, IOException {<br> // 1、获取数据库所有表<br> List<String> tables = new ArrayList<String>();<br> try {<br> DatabaseMetaData dbMetaData = conn.getMetaData();<br> ResultSet rs = dbMetaData.getTables(null, null, null, new String[]{"TABLE"});<br> while (rs.next()) {<br> tables.add(rs.getString("TABLE_NAME"));<br> }<br> } catch (SQLException e) {<br> e.printStackTrace();<br> }<br> // 2、遍历数据库表,获取各表的字段等信息<br> Map<String, List<TableField>> map = new HashMap<>();<br> for (String tableName : tables) {<br> List<TableField> tablesMessage = new ArrayList<TableField>();<br> String sql = "select * from " + tableName;<br> try {<br> PreparedStatement ps = conn.prepareStatement(sql);<br> ResultSet rs = ps.executeQuery();<br> ResultSetMetaData meta = rs.getMetaData();<br> int columeCount = meta.getColumnCount();<br> for (int i = 1; i < columeCount + 1; i++) {<br> TableField tableField = new TableField();<br> tableField.setName(meta.getColumnName(i));<br> tableField.setType(Integer.toString(meta.getColumnType(i)));<br> tablesMessage.add(tableField);<br> }<br> map.put(tableName, tablesMessage);<br> } catch (SQLException e) {<br> e.printStackTrace();<br> }<br> }<br> return map;<br> }<br><br> //释放conn<br> @Override<br> public void destroy() {<br> if (conn != null) {<br> try {<br> conn.close();<br> } catch (SQLException e) {<br> e.printStackTrace();<br> }<br> }<br> }<br>}