forked from lxm_tools/screw
支持MD导出自定义表列
This commit is contained in:
@@ -21,6 +21,7 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件生成配置
|
* 文件生成配置
|
||||||
@@ -47,6 +48,11 @@ public class EngineConfig implements Serializable {
|
|||||||
* 生成实现
|
* 生成实现
|
||||||
*/
|
*/
|
||||||
private EngineTemplateType produceType;
|
private EngineTemplateType produceType;
|
||||||
|
/**
|
||||||
|
* 忽略表列
|
||||||
|
* {@link cn.smallbun.screw.core.metadata.model.ColumnModel}
|
||||||
|
*/
|
||||||
|
private List<String> ignoreColumnModel;
|
||||||
/**
|
/**
|
||||||
* 自定义模板,模板需要和文件类型和使用模板的语法进行编写和处理,否则将会生成错误
|
* 自定义模板,模板需要和文件类型和使用模板的语法进行编写和处理,否则将会生成错误
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* screw-core - 简洁好用的数据库表结构文档生成工具
|
||||||
|
* Copyright © 2020 SanLi (qinggang.zuo@gmail.com)
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package cn.smallbun.screw.core.metadata;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表列领域对象枚举
|
||||||
|
*
|
||||||
|
* @author liu xm
|
||||||
|
* Created by 960132232@qq.com on 2022/04/25 10:43
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ColumnModelEnum implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
COLUMN_NAME("名称", "columnName"),
|
||||||
|
/**
|
||||||
|
* 数据类型
|
||||||
|
*/
|
||||||
|
COLUMN_TYPE("数据类型", "columnType"),
|
||||||
|
/**
|
||||||
|
* 小数位
|
||||||
|
*/
|
||||||
|
DECIMAL_DIGITS("小数位", "decimalDigits"),
|
||||||
|
/**
|
||||||
|
* 允许空值
|
||||||
|
*/
|
||||||
|
NULLABLE("允许空值", "nullable"),
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
PRIMARY_KEY("主键", "primaryKey"),
|
||||||
|
/**
|
||||||
|
* 默认值
|
||||||
|
*/
|
||||||
|
COLUMN_DEF("默认值", "columnDef"),
|
||||||
|
/**
|
||||||
|
* 说明
|
||||||
|
*/
|
||||||
|
REMARKS("说明", "remarks"),;
|
||||||
|
|
||||||
|
private final String fieldChineseName;
|
||||||
|
|
||||||
|
private final String fieldName;
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package cn.smallbun.screw.core.metadata.model;
|
package cn.smallbun.screw.core.metadata.model;
|
||||||
|
|
||||||
|
import cn.smallbun.screw.core.metadata.ColumnModelEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@@ -31,22 +32,25 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class TableModel implements Serializable {
|
public class TableModel implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 825666678767312142L;
|
private static final long serialVersionUID = 825666678767312142L;
|
||||||
/**
|
/**
|
||||||
* 表名
|
* 表名
|
||||||
*/
|
*/
|
||||||
private String tableName;
|
private String tableName;
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String remarks;
|
private String remarks;
|
||||||
/**
|
/**
|
||||||
* 表列
|
* 表列
|
||||||
*/
|
*/
|
||||||
private List<ColumnModel> columns;
|
private List<ColumnModel> columns;
|
||||||
|
/**
|
||||||
|
* 表列枚举
|
||||||
|
*/
|
||||||
|
private List<ColumnModelEnum> columnModel;
|
||||||
/**
|
/**
|
||||||
* 是否弃用
|
* 是否弃用
|
||||||
*/
|
*/
|
||||||
private Boolean deprecated;
|
private Boolean deprecated;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,16 +22,14 @@ import java.util.List;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import cn.smallbun.screw.core.Configuration;
|
import cn.smallbun.screw.core.Configuration;
|
||||||
import cn.smallbun.screw.core.metadata.Column;
|
import cn.smallbun.screw.core.metadata.*;
|
||||||
import cn.smallbun.screw.core.metadata.Database;
|
|
||||||
import cn.smallbun.screw.core.metadata.PrimaryKey;
|
|
||||||
import cn.smallbun.screw.core.metadata.Table;
|
|
||||||
import cn.smallbun.screw.core.metadata.model.ColumnModel;
|
import cn.smallbun.screw.core.metadata.model.ColumnModel;
|
||||||
import cn.smallbun.screw.core.metadata.model.DataModel;
|
import cn.smallbun.screw.core.metadata.model.DataModel;
|
||||||
import cn.smallbun.screw.core.metadata.model.TableModel;
|
import cn.smallbun.screw.core.metadata.model.TableModel;
|
||||||
import cn.smallbun.screw.core.query.DatabaseQuery;
|
import cn.smallbun.screw.core.query.DatabaseQuery;
|
||||||
import cn.smallbun.screw.core.query.DatabaseQueryFactory;
|
import cn.smallbun.screw.core.query.DatabaseQueryFactory;
|
||||||
import cn.smallbun.screw.core.util.StringUtils;
|
import cn.smallbun.screw.core.util.StringUtils;
|
||||||
|
import org.apache.commons.lang3.EnumUtils;
|
||||||
|
|
||||||
import static cn.smallbun.screw.core.constant.DefaultConstants.N;
|
import static cn.smallbun.screw.core.constant.DefaultConstants.N;
|
||||||
import static cn.smallbun.screw.core.constant.DefaultConstants.Y;
|
import static cn.smallbun.screw.core.constant.DefaultConstants.Y;
|
||||||
@@ -49,7 +47,7 @@ public class DataModelProcess extends AbstractProcess {
|
|||||||
/**
|
/**
|
||||||
* 构造方法
|
* 构造方法
|
||||||
*
|
*
|
||||||
* @param configuration {@link Configuration}
|
* @param configuration {@link Configuration}
|
||||||
*/
|
*/
|
||||||
public DataModelProcess(Configuration configuration) {
|
public DataModelProcess(Configuration configuration) {
|
||||||
super(configuration);
|
super(configuration);
|
||||||
@@ -143,6 +141,13 @@ public class DataModelProcess extends AbstractProcess {
|
|||||||
}
|
}
|
||||||
//放入列
|
//放入列
|
||||||
tableModel.setColumns(columnModels);
|
tableModel.setColumns(columnModels);
|
||||||
|
final List<String> ignoreColumnModel = config.getEngineConfig().getIgnoreColumnModel();
|
||||||
|
final List<ColumnModelEnum> columnModelEnumList = EnumUtils
|
||||||
|
.getEnumList(ColumnModelEnum.class).stream()
|
||||||
|
.filter(item -> !ignoreColumnModel.contains(item.getFieldName()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 表列
|
||||||
|
tableModel.setColumnModel(columnModelEnumList);
|
||||||
}
|
}
|
||||||
//设置表
|
//设置表
|
||||||
model.setTables(filterTables(tableModels));
|
model.setTables(filterTables(tableModels));
|
||||||
@@ -156,9 +161,10 @@ public class DataModelProcess extends AbstractProcess {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* packageColumn
|
* packageColumn
|
||||||
|
*
|
||||||
* @param columnModels {@link List}
|
* @param columnModels {@link List}
|
||||||
* @param keyList {@link List}
|
* @param keyList {@link List}
|
||||||
* @param column {@link Column}
|
* @param column {@link Column}
|
||||||
*/
|
*/
|
||||||
private void packageColumn(List<ColumnModel> columnModels, List<String> keyList,
|
private void packageColumn(List<ColumnModel> columnModels, List<String> keyList,
|
||||||
Column column) {
|
Column column) {
|
||||||
|
|||||||
@@ -47,10 +47,10 @@
|
|||||||
**数据列:**
|
**数据列:**
|
||||||
|
|
||||||
<#list t.columns>
|
<#list t.columns>
|
||||||
| 序号 | 名称 | 数据类型 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|
| 序号 | <#list t.columnModel><#items as c>${c.fieldChineseName} |</#items></#list>
|
||||||
| :---: | :---: | :---:| :---: | :---: | :---: | :---: | :---: |
|
| :---: | <#list t.columnModel><#items as c> :---: |</#items></#list>
|
||||||
<#items as c>
|
<#items as c>
|
||||||
| ${c?index+1} | ${c.columnName!''} | ${c.columnType!''} | ${c.decimalDigits!'0'} | ${c.nullable!''} | ${c.primaryKey!''} | ${c.columnDef!''} | ${c.remarks!''} |
|
| ${c?index+1} |<#list t.columnModel><#items as a>${c[a.fieldName]!''} |</#items></#list>
|
||||||
</#items>
|
</#items>
|
||||||
</#list></#items>
|
</#list></#items>
|
||||||
</#list>
|
</#list>
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ public class MySQLDocumentationBuilderTest extends AbstractDocumentationExecute
|
|||||||
hikariConfig.setMinimumIdle(2);
|
hikariConfig.setMinimumIdle(2);
|
||||||
hikariConfig.setMaximumPoolSize(5);
|
hikariConfig.setMaximumPoolSize(5);
|
||||||
DataSource dataSource = new HikariDataSource(hikariConfig);
|
DataSource dataSource = new HikariDataSource(hikariConfig);
|
||||||
|
//忽略表列
|
||||||
|
ArrayList<String> ignoreColumnModel = new ArrayList<>();
|
||||||
|
ignoreColumnModel.add("decimalDigits");
|
||||||
//生成配置
|
//生成配置
|
||||||
EngineConfig engineConfig = EngineConfig.builder()
|
EngineConfig engineConfig = EngineConfig.builder()
|
||||||
//生成文件路径
|
//生成文件路径
|
||||||
@@ -64,7 +67,9 @@ public class MySQLDocumentationBuilderTest extends AbstractDocumentationExecute
|
|||||||
//打开目录
|
//打开目录
|
||||||
.openOutputDir(true)
|
.openOutputDir(true)
|
||||||
//文件类型
|
//文件类型
|
||||||
.fileType(EngineFileType.HTML)
|
.fileType(EngineFileType.MD)
|
||||||
|
//忽略表列
|
||||||
|
.ignoreColumnModel(ignoreColumnModel)
|
||||||
//生成模板实现
|
//生成模板实现
|
||||||
.produceType(EngineTemplateType.freemarker).build();
|
.produceType(EngineTemplateType.freemarker).build();
|
||||||
|
|
||||||
|
|||||||
@@ -156,6 +156,12 @@ public class RunDocMojo extends AbstractMojo {
|
|||||||
*/
|
*/
|
||||||
@Parameter(defaultValue = "HTML")
|
@Parameter(defaultValue = "HTML")
|
||||||
private EngineFileType fileType;
|
private EngineFileType fileType;
|
||||||
|
/**
|
||||||
|
* 忽略表列
|
||||||
|
* {@link cn.smallbun.screw.core.metadata.model.ColumnModel}
|
||||||
|
*/
|
||||||
|
@Parameter
|
||||||
|
private List<String> ignoreColumnModel;
|
||||||
/**
|
/**
|
||||||
* 生成实现
|
* 生成实现
|
||||||
*/
|
*/
|
||||||
@@ -218,6 +224,8 @@ public class RunDocMojo extends AbstractMojo {
|
|||||||
.fileOutputDir(getFileOutputDir())
|
.fileOutputDir(getFileOutputDir())
|
||||||
//文件类型
|
//文件类型
|
||||||
.fileType(getFileType())
|
.fileType(getFileType())
|
||||||
|
//忽略表列
|
||||||
|
.ignoreColumnModel(getIgnoreColumnModel())
|
||||||
//生成模板实现
|
//生成模板实现
|
||||||
.produceType(getProduceType())
|
.produceType(getProduceType())
|
||||||
//自定义模板位置
|
//自定义模板位置
|
||||||
|
|||||||
Reference in New Issue
Block a user