1 Commits

Author SHA1 Message Date
fef8785e3b 支持MD导出自定义表列 2022-04-25 13:16:29 +08:00
7 changed files with 114 additions and 18 deletions

View File

@@ -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;
/**
* 自定义模板,模板需要和文件类型和使用模板的语法进行编写和处理,否则将会生成错误
*/

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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>

View File

@@ -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();

View File

@@ -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())
//自定义模板位置