获取数据库中的所有的表名称
想要根据数据库中的建表语句来创建java文件首先要先知道数据库中都有那些表。so,开始。
配置数据库的相关信息
在获取数据库链接前,我们先写一个文件用来保存数据库链接的各种信息。
新建文件config.xml
<xml>
<jdbc.url></jdbc.url>
<jdbc.username></jdbc.username>
<jdbc.password></jdbc.password>
</xml>
jdbc.url:链接数据库的url。例如:jdbc:mysql://127.0.0.1:3306/demo?useSSL=true
jdbc.username:数据库的用户名。
jdbc.password:数据库的密码。
这样就配置好了。
写一个工具类读取xml:XmlUtils.java
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Scanner;
/**
* 读取xml
*/
public class XmlUtils {
/**
* 读取 Document
*
* @param xmlPath
* @return
*/
public static Document getConfigDocument(String xmlPath) {
try {
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(xmlPath);
Scanner scanner = new Scanner(resourceAsStream);
StringBuilder stringBuilder = new StringBuilder();
while (scanner.hasNextLine()) {
stringBuilder.append(scanner.nextLine()).append("\n");
}
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilde = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilde.parse(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
return document;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
打开数据库链接
//获取数据库配置信息
Document configXml = XmlUtils.getConfigDocument(CONFIG_PATH);
Element element = configXml.getDocumentElement();
String jdbcUrl = element.getElementsByTagName("jdbc.url").item(0).getTextContent();
String username = element.getElementsByTagName("jdbc.username").item(0).getTextContent();
String password = element.getElementsByTagName("jdbc.password").item(0).getTextContent();
//打开数据库链接
Connection conn = (Connection) DriverManager.getConnection(jdbcUrl, username, password);
获取到链接之后,下一步就是要读取数据库中的表数据了。
获取数据库中的表
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SHOW TABLES;");
while (resultSet.next()) {
//这里就获取到了数据库中的所有的表的名称了。
String tableName = resultSet.getString(1);
}
这里拿到表名称后就可以依次得到建表语句,并解析建表语句了。
这里之所以使用解析建表语句的方法是因为这样可以比较完整的得到注释信息。用另一种方法的时候表的注释一直获取不到(另一种方法我忘记怎么说了~)。
得到建表语句
这里就是拼接sql,然后执行就好了。下面是代码:
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("show CREATE TABLE 表名称");
while (resultSet.next()) {
//这里就得到了表的建表语句
String createTableSql = resultSet.getString(2);
}
做到这一步,我们就完整的得到了数据库中的所有的建表语句了。接下来就是要分析建表语句并且用来生成实体类了。
下一篇继续。