All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mybatisflex.codegen.config.StrategyConfig Maven / Gradle / Ivy

There is a newer version: 1.10.3
Show newest version
/*
 *  Copyright (c) 2022-2025, Mybatis-Flex ([email protected]).
 *  

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.mybatisflex.codegen.config; import com.mybatisflex.core.util.StringUtil; import java.io.Serializable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * 表策略配置。 * * @author 王帅 * @since 2023-05-14 */ @SuppressWarnings("unused") public class StrategyConfig implements Serializable { private static final long serialVersionUID = 504853587703061034L; /** * 数据库表前缀,多个前缀用英文逗号(,) 隔开。 */ private String tablePrefix; /** * 数据库表后缀,多个后缀用英文逗号(,) 隔开。 */ private String tableSuffix; /** * 逻辑删除的默认字段名称。 */ private String logicDeleteColumn; /** * 乐观锁的字段名称。 */ private String versionColumn; /** * 是否生成视图映射。 */ private boolean generateForView; /** * 单独为某张表添加独立的配置。 */ private Map tableConfigMap; /** * 设置某个列的全局配置。 */ private Map columnConfigMap; /** * 自定义列配置工厂。 */ private ColumnConfigFactory columnConfigFactory; /** * 需要生成的表在哪个模式下 */ private String generateSchema; /** * 生成哪些表,白名单。 */ private Set generateTables; /** * 不生成哪些表,黑名单。 */ private Set unGenerateTables; /** * 需要忽略的列 全局配置。 */ private Set ignoreColumns; /** * 获取需要忽略的列 全局配置。 */ public Set getIgnoreColumns() { return ignoreColumns; } /** * 设置需要忽略的列 全局配置。 */ public StrategyConfig setIgnoreColumns(String... columns) { if (ignoreColumns == null) { ignoreColumns = new HashSet<>(); } for (String column : columns) { if (column != null && !column.trim().isEmpty()) { ignoreColumns.add(column.trim().toLowerCase()); } } return this; } /** * 设置要生成的模式。 */ public String getGenerateSchema() { return generateSchema; } /** * 获取要生成的模式。 */ public StrategyConfig setGenerateSchema(String generateSchema) { this.generateSchema = generateSchema; return this; } /** * 获取表配置。 */ public TableConfig getTableConfig(String tableName) { if (tableConfigMap == null) { return null; } TableConfig tableConfig = tableConfigMap.get(tableName); return tableConfig != null ? tableConfig : tableConfigMap.get(TableConfig.ALL_TABLES); } /** * 设置表配置。 */ public StrategyConfig setTableConfig(TableConfig tableConfig) { if (tableConfigMap == null) { tableConfigMap = new HashMap<>(); } tableConfigMap.put(tableConfig.getTableName(), tableConfig); return this; } /** * 获取列配置。 */ public ColumnConfig getColumnConfig(String tableName, String columnName) { ColumnConfig columnConfig = null; if (columnConfigFactory != null) { columnConfig = columnConfigFactory.getColumnConfig(tableName, columnName); } TableConfig tableConfig = getTableConfig(tableName); if (columnConfig == null && tableConfig != null) { columnConfig = tableConfig.getColumnConfig(columnName); } if (columnConfig == null && columnConfigMap != null) { columnConfig = columnConfigMap.get(columnName); } if (columnConfig == null) { columnConfig = new ColumnConfig(); } //全局配置的逻辑删除 if (columnName.equals(logicDeleteColumn) && columnConfig.getLogicDelete() == null) { columnConfig.setLogicDelete(true); } //全部配置的乐观锁版本 if (columnName.equals(versionColumn) && columnConfig.getVersion() == null) { columnConfig.setVersion(true); } return columnConfig; } /** * 设置列配置。 */ public StrategyConfig setColumnConfig(ColumnConfig columnConfig) { if (columnConfigMap == null) { columnConfigMap = new HashMap<>(); } columnConfigMap.put(columnConfig.getColumnName(), columnConfig); return this; } /** * 设置列配置。 */ public StrategyConfig setColumnConfig(String tableName, ColumnConfig columnConfig) { TableConfig tableConfig = getTableConfig(tableName); if (tableConfig == null) { tableConfig = new TableConfig(); tableConfig.setTableName(tableName); setTableConfig(tableConfig); } tableConfig.setColumnConfig(columnConfig); return this; } public ColumnConfigFactory getColumnConfigFactory() { return columnConfigFactory; } public void setColumnConfigFactory(ColumnConfigFactory columnConfigFactory) { this.columnConfigFactory = columnConfigFactory; } /** * 设置生成哪些表。 */ public StrategyConfig setGenerateTable(String... tables) { if (generateTables == null) { generateTables = new HashSet<>(); } for (String table : tables) { if (table != null && !table.trim().isEmpty()) { generateTables.add(table.trim()); } } return this; } /** * 设置不生成哪些表。 */ public StrategyConfig setUnGenerateTable(String... tables) { if (unGenerateTables == null) { unGenerateTables = new HashSet<>(); } for (String table : tables) { if (table != null && !table.trim().isEmpty()) { unGenerateTables.add(table.trim()); } } return this; } public boolean isSupportGenerate(String table) { if (table == null || table.isEmpty()) { return true; } if (unGenerateTables != null) { for (String unGenerateTable : unGenerateTables) { // 使用正则表达式匹配表名 String regex = unGenerateTable.replace("*", ".*"); if (table.matches(regex)) { return false; } } } //不配置指定比表名的情况下,支持所有表 if (generateTables == null || generateTables.isEmpty()) { return true; } for (String generateTable : generateTables) { String regex = generateTable.replace("*", ".*"); if (table.matches(regex)) { return true; } } return false; } /** * 获取表前缀。 */ public String getTablePrefix() { return tablePrefix; } /** * 设置表前缀。 */ public StrategyConfig setTablePrefix(String... tablePrefix) { this.tablePrefix = StringUtil.join(",", tablePrefix); return this; } /** * 获取表后缀。 */ public String getTableSuffix() { return tableSuffix; } /** * 设置表后缀。 */ public StrategyConfig setTableSuffix(String... tableSuffix) { this.tableSuffix = StringUtil.join(",", tableSuffix); return this; } /** * 获取逻辑删除列。 */ public String getLogicDeleteColumn() { return logicDeleteColumn; } /** * 设置逻辑删除列。 */ public StrategyConfig setLogicDeleteColumn(String logicDeleteColumn) { this.logicDeleteColumn = logicDeleteColumn; return this; } /** * 获取版本列。 */ public String getVersionColumn() { return versionColumn; } /** * 设置版本列。 */ public StrategyConfig setVersionColumn(String versionColumn) { this.versionColumn = versionColumn; return this; } /** * 是否生成视图。 */ public boolean isGenerateForView() { return generateForView; } /** * 设置是否生成视图。 */ public StrategyConfig setGenerateForView(boolean generateForView) { this.generateForView = generateForView; return this; } /** * 获取表配置。 */ public Map getTableConfigMap() { return tableConfigMap; } /** * 设置表配置。 */ public StrategyConfig setTableConfigMap(Map tableConfigMap) { this.tableConfigMap = tableConfigMap; return this; } /** * 获取列配置。 */ public Map getColumnConfigMap() { return columnConfigMap; } /** * 设置列配置。 */ public StrategyConfig setColumnConfigMap(Map columnConfigMap) { this.columnConfigMap = columnConfigMap; return this; } /** * 获取生成哪些表。 */ public Set getGenerateTables() { return generateTables; } /** * 设置生成哪些表。 */ public StrategyConfig setGenerateTables(Set generateTables) { this.generateTables = generateTables; return this; } /** * 获取不生成哪些表。 */ public Set getUnGenerateTables() { return unGenerateTables; } /** * 设置不生成哪些表。 */ public StrategyConfig setUnGenerateTables(Set unGenerateTables) { this.unGenerateTables = unGenerateTables; return this; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy