forked from lxm_tools/screw
支持MD导出自定义表列
This commit is contained in:
@@ -21,6 +21,7 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 文件生成配置
|
||||
@@ -47,6 +48,11 @@ public class EngineConfig implements Serializable {
|
||||
* 生成实现
|
||||
*/
|
||||
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;
|
||||
|
||||
import cn.smallbun.screw.core.metadata.ColumnModelEnum;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -31,22 +32,25 @@ import java.util.List;
|
||||
@Data
|
||||
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 cn.smallbun.screw.core.Configuration;
|
||||
import cn.smallbun.screw.core.metadata.Column;
|
||||
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.*;
|
||||
import cn.smallbun.screw.core.metadata.model.ColumnModel;
|
||||
import cn.smallbun.screw.core.metadata.model.DataModel;
|
||||
import cn.smallbun.screw.core.metadata.model.TableModel;
|
||||
import cn.smallbun.screw.core.query.DatabaseQuery;
|
||||
import cn.smallbun.screw.core.query.DatabaseQueryFactory;
|
||||
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.Y;
|
||||
@@ -49,7 +47,7 @@ public class DataModelProcess extends AbstractProcess {
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param configuration {@link Configuration}
|
||||
* @param configuration {@link Configuration}
|
||||
*/
|
||||
public DataModelProcess(Configuration configuration) {
|
||||
super(configuration);
|
||||
@@ -143,6 +141,13 @@ public class DataModelProcess extends AbstractProcess {
|
||||
}
|
||||
//放入列
|
||||
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));
|
||||
@@ -156,9 +161,10 @@ public class DataModelProcess extends AbstractProcess {
|
||||
|
||||
/**
|
||||
* packageColumn
|
||||
*
|
||||
* @param columnModels {@link List}
|
||||
* @param keyList {@link List}
|
||||
* @param column {@link Column}
|
||||
* @param keyList {@link List}
|
||||
* @param column {@link Column}
|
||||
*/
|
||||
private void packageColumn(List<ColumnModel> columnModels, List<String> keyList,
|
||||
Column column) {
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
**数据列:**
|
||||
|
||||
<#list t.columns>
|
||||
| 序号 | 名称 | 数据类型 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|
||||
| :---: | :---: | :---:| :---: | :---: | :---: | :---: | :---: |
|
||||
| 序号 | <#list t.columnModel><#items as c>${c.fieldChineseName} |</#items></#list>
|
||||
| :---: | <#list t.columnModel><#items as c> :---: |</#items></#list>
|
||||
<#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>
|
||||
</#list></#items>
|
||||
</#list>
|
||||
</#list>
|
||||
|
||||
@@ -57,6 +57,9 @@ public class MySQLDocumentationBuilderTest extends AbstractDocumentationExecute
|
||||
hikariConfig.setMinimumIdle(2);
|
||||
hikariConfig.setMaximumPoolSize(5);
|
||||
DataSource dataSource = new HikariDataSource(hikariConfig);
|
||||
//忽略表列
|
||||
ArrayList<String> ignoreColumnModel = new ArrayList<>();
|
||||
ignoreColumnModel.add("decimalDigits");
|
||||
//生成配置
|
||||
EngineConfig engineConfig = EngineConfig.builder()
|
||||
//生成文件路径
|
||||
@@ -64,7 +67,9 @@ public class MySQLDocumentationBuilderTest extends AbstractDocumentationExecute
|
||||
//打开目录
|
||||
.openOutputDir(true)
|
||||
//文件类型
|
||||
.fileType(EngineFileType.HTML)
|
||||
.fileType(EngineFileType.MD)
|
||||
//忽略表列
|
||||
.ignoreColumnModel(ignoreColumnModel)
|
||||
//生成模板实现
|
||||
.produceType(EngineTemplateType.freemarker).build();
|
||||
|
||||
|
||||
@@ -156,6 +156,12 @@ public class RunDocMojo extends AbstractMojo {
|
||||
*/
|
||||
@Parameter(defaultValue = "HTML")
|
||||
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())
|
||||
//文件类型
|
||||
.fileType(getFileType())
|
||||
//忽略表列
|
||||
.ignoreColumnModel(getIgnoreColumnModel())
|
||||
//生成模板实现
|
||||
.produceType(getProduceType())
|
||||
//自定义模板位置
|
||||
|
||||
Reference in New Issue
Block a user