下面我将为你详细讲解“java快速生成数据库文档详情”的完整攻略。
1. 环境准备
首先,我们需要安装Java开发环境,JDK和JRE都需要安装。然后,我们需要下载并安装MySQL数据库。
2. 导入数据库表结构
将需要生成文档的数据库表结构信息导出为.sql文件,然后使用MySQL命令行工具或可视化工具导入到本地MySQL数据库中。
mysql -u root -p database_name < db.sql
3. 下载和引入工具库
Java开发中有很多开源的工具库来帮助我们生成数据库文档。这里我推荐使用MyBatis-Generator和freemarker。你可以在Maven中添加以下依赖引入:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
4. 编写GeneratorConfig.xml配置文件
在项目根目录下创建名为generatorConfig.xml的文件,并按以下格式编写:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry location="mysql-connector-java-5.1.7.jar"/>
<context id="mysql" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="false"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.test.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.test.mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.test.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table schema="" tableName="%">
<property name="useActualColumnNames" value="true"/>
<generatedKey column="id" sqlStatement="MYSQL" identity="true"/>
</table>
</context>
</generatorConfiguration>
5. 编写Java类
在项目中新建Java类,用于调用MyBatis-Generator生成数据库表结构对应实体类、Mapper XML文件和Mapper接口文件。示例如下:
public class MainGenerator {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
InputStream configFile = MainGenerator.class.getResourceAsStream("/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}
运行该main方法即可自动生成所有实体类、Mapper XML文件和Mapper接口文件。
6. 创建freemarker模板文件
新建模板文件,用于生成文档。模板文件使用freemarker语法编写,这里提供一个简单的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>${title}</title>
</head>
<body>
<h1>${title}</h1>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>长度</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<#list fields as field>
<tr>
<td>${field.name}</td>
<td>${field.type}</td>
<td>${field.length}</td>
<td>${field.comment}</td>
</tr>
</#list>
</tbody>
</table>
</body>
</html>
7. 编写Java代码
在项目中编写Java代码,用于调用数据库表结构信息,生成文档。具体示例如下:
public class Generator {
public static void main(String[] args) throws Exception {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement preparedStatement = connection.prepareStatement("select COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT, CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_schema = 'test' and table_name = 'example'");
ResultSet resultSet = preparedStatement.executeQuery();
List<Field> fields = new ArrayList<>();
while (resultSet.next()) {
Field field = new Field();
field.setName(resultSet.getString(1));
field.setType(resultSet.getString(2));
field.setComment(resultSet.getString(3));
field.setLength(resultSet.getLong(4));
fields.add(field);
}
resultSet.close();
preparedStatement.close();
connection.close();
Map<String, Object> root = new HashMap<>();
root.put("title", "example表结构文档");
root.put("fields", fields);
Template template = new Template("template.ftl", new InputStreamReader(Generator.class.getResourceAsStream("/template.ftl")), new Configuration());
Writer out = new FileWriter(new File("example.html"));
template.process(root, out);
out.flush();
out.close();
}
}
class Field {
private String name;
private String type;
private String comment;
private long length;
// getter and setter methods...
}
8. 运行代码
运行Generator.main方法,即可在项目目录下生成example.html文件,即数据库表example的文档详情。
9. 示例
下面以一个示例演示一下以上步骤:假设我们有一个名为example的数据库表,有三个字段:id、name、age。
步骤1 - 环境准备
安装Java和MySQL。
步骤2 - 导入数据库表结构
将example表结构信息导出到example.sql文件,然后使用以下命令导入到本地MySQL数据库中:
mysql -u root -p example < example.sql
步骤3 - 下载和引入工具库
添加MyBatis-Generator和freemarker到Maven依赖中。
步骤4 - 编写GeneratorConfig.xml配置文件
在项目根目录下创建名为generatorConfig.xml的文件,并按照之前的示例格式编写。
步骤5 - 编写Java类
在项目中新建Java类MainGenerator.java,用于调用MyBatis-Generator生成实体类和Mapper文件。其中的main方法按照之前的示例编写。
步骤6 - 创建freemarker模板文件
在项目中新建名为template.ftl的文件,按照之前的示例编写。
步骤7 - 编写Java代码
在项目中新建Java类Generator.java,用于调用数据库表结构信息,生成文档。其中的main方法按照之前的示例编写。
步骤8 - 运行代码
运行Generator.main方法,即可在项目目录下生成example.html文件。
示例代码摘录
以下是MainGenerator.java的代码:
public class MainGenerator {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
InputStream configFile = MainGenerator.class.getResourceAsStream("/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}
以下是Generator.java的代码:
public class Generator {
public static void main(String[] args) throws Exception {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement preparedStatement = connection.prepareStatement("select COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT, CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_schema = 'test' and table_name = 'example'");
ResultSet resultSet = preparedStatement.executeQuery();
List<Field> fields = new ArrayList<>();
while (resultSet.next()) {
Field field = new Field();
field.setName(resultSet.getString(1));
field.setType(resultSet.getString(2));
field.setComment(resultSet.getString(3));
field.setLength(resultSet.getLong(4));
fields.add(field);
}
resultSet.close();
preparedStatement.close();
connection.close();
Map<String, Object> root = new HashMap<>();
root.put("title", "example表结构文档");
root.put("fields", fields);
Template template = new Template("template.ftl", new InputStreamReader(Generator.class.getResourceAsStream("/template.ftl")), new Configuration());
Writer out = new FileWriter(new File("example.html"));
template.process(root, out);
out.flush();
out.close();
}
}
class Field {
private String name;
private String type;
private String comment;
private long length;
// getter and setter methods...
}
以上就是使用Java快速生成数据库文档详情的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java快速生成数据库文档详情 - Python技术站