springboot项目 java写一个工具类,查找出mysql数据库中其中一个库的所有表和字段和字段长度并生成一个xml文件
时间: 2023-05-23 19:02:19 浏览: 214
Java实体类字段生成工具类-将数据库表列字段转为Java实体类驼峰字段
可以使用JDBC连接MySQL,然后使用DatabaseMetaData类获取数据库所有表的信息,遍历所有表的所有字段,并将它们添加到一个XML DOM对象中。最后将DOM对象写入XML文件即可。
下面是代码示例:
```java
public class MysqlXmlGenerator {
private static final String URL = "jdbc:mysql://localhost:3306/database_name?useSSL=false";
private static final String USER = "username";
private static final String PASSWORD = "password";
public static void generateXml() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element rootElement = doc.createElement("root");
doc.appendChild(rootElement);
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD)) {
DatabaseMetaData metaData = conn.getMetaData();
ResultSet rs = metaData.getTables(null, null, "%", new String[]{"TABLE"});
while (rs.next()) {
String tableName = rs.getString("TABLE_NAME");
Element tableElement = doc.createElement("table");
tableElement.setAttribute("name", tableName);
rootElement.appendChild(tableElement);
ResultSet rsColumns = metaData.getColumns(null, null, tableName, null);
while (rsColumns.next()) {
Element columnElement = doc.createElement("column");
columnElement.setAttribute("name", rsColumns.getString("COLUMN_NAME"));
columnElement.setAttribute("type", rsColumns.getString("TYPE_NAME"));
columnElement.setAttribute("length", String.valueOf(rsColumns.getInt("COLUMN_SIZE")));
tableElement.appendChild(columnElement);
}
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("database.xml"));
transformer.transform(source, result);
}
}
```
你只需要将其中的"database_name"替换成你需要生成XML的数据库名,"username"和"password"替换成你的数据库账号密码即可。
调用该方法即可生成XML文件。
```java
public static void main(String[] args) throws Exception {
generateXml();
}
```
注:本示例仅供参考,实际使用需要根据需求进行调整和优化。
阅读全文