|
@@ -1,650 +0,0 @@
|
|
|
-/**
|
|
|
- * Copyright (c) 2011-2020, hubin (jobob@qq.com).
|
|
|
- * <p>
|
|
|
- * 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
|
|
|
- * <p>
|
|
|
- * http://www.apache.org/licenses/LICENSE-2.0
|
|
|
- * <p>
|
|
|
- * 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.baomidou.mybatisplus.generator.config.builder;
|
|
|
-
|
|
|
-import java.io.File;
|
|
|
-import java.sql.Connection;
|
|
|
-import java.sql.PreparedStatement;
|
|
|
-import java.sql.ResultSet;
|
|
|
-import java.sql.SQLException;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
-
|
|
|
-import com.baomidou.mybatisplus.generator.config.ConstVal;
|
|
|
-import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.GlobalConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.PackageConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.StrategyConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.TemplateConfig;
|
|
|
-import com.baomidou.mybatisplus.generator.config.po.TableField;
|
|
|
-import com.baomidou.mybatisplus.generator.config.po.TableFill;
|
|
|
-import com.baomidou.mybatisplus.generator.config.po.TableInfo;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.DbType;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.QuerySQL;
|
|
|
-import com.baomidou.mybatisplus.toolkit.StringUtils;
|
|
|
-
|
|
|
-/**
|
|
|
- * <p>
|
|
|
- * 配置汇总 传递给文件生成工具
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @author YangHu, tangguo, hubin
|
|
|
- * @since 2016-08-30
|
|
|
- */
|
|
|
-public class ConfigBuilder {
|
|
|
-
|
|
|
- /**
|
|
|
- * 模板路径配置信息
|
|
|
- */
|
|
|
- private final TemplateConfig template;
|
|
|
- /**
|
|
|
- * 数据库配置
|
|
|
- */
|
|
|
- private final DataSourceConfig dataSourceConfig;
|
|
|
- /**
|
|
|
- * SQL连接
|
|
|
- */
|
|
|
- private Connection connection;
|
|
|
- /**
|
|
|
- * SQL语句类型
|
|
|
- */
|
|
|
- private QuerySQL querySQL;
|
|
|
- private String superEntityClass;
|
|
|
- private String superMapperClass;
|
|
|
- /**
|
|
|
- * service超类定义
|
|
|
- */
|
|
|
- private String superServiceClass;
|
|
|
- private String superServiceImplClass;
|
|
|
- private String superControllerClass;
|
|
|
- /**
|
|
|
- * 数据库表信息
|
|
|
- */
|
|
|
- private List<TableInfo> tableInfoList;
|
|
|
- /**
|
|
|
- * 包配置详情
|
|
|
- */
|
|
|
- private Map<String, String> packageInfo;
|
|
|
- /**
|
|
|
- * 路径配置信息
|
|
|
- */
|
|
|
- private Map<String, String> pathInfo;
|
|
|
- /**
|
|
|
- * 策略配置
|
|
|
- */
|
|
|
- private StrategyConfig strategyConfig;
|
|
|
-
|
|
|
- /**
|
|
|
- * 全局配置信息
|
|
|
- */
|
|
|
- private GlobalConfig globalConfig;
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 在构造器中处理配置
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param packageConfig 包配置
|
|
|
- * @param dataSourceConfig 数据源配置
|
|
|
- * @param strategyConfig 表配置
|
|
|
- * @param template 模板配置
|
|
|
- * @param globalConfig 全局配置
|
|
|
- */
|
|
|
- public ConfigBuilder(PackageConfig packageConfig, DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig,
|
|
|
- TemplateConfig template, GlobalConfig globalConfig) {
|
|
|
- // 全局配置
|
|
|
- if (null == globalConfig) {
|
|
|
- this.globalConfig = new GlobalConfig();
|
|
|
- } else {
|
|
|
- this.globalConfig = globalConfig;
|
|
|
- }
|
|
|
- // 模板配置
|
|
|
- if (null == template) {
|
|
|
- this.template = new TemplateConfig();
|
|
|
- } else {
|
|
|
- this.template = template;
|
|
|
- }
|
|
|
- // 包配置
|
|
|
- if (null == packageConfig) {
|
|
|
- handlerPackage(this.template, this.globalConfig.getOutputDir(), new PackageConfig());
|
|
|
- } else {
|
|
|
- handlerPackage(this.template, this.globalConfig.getOutputDir(), packageConfig);
|
|
|
- }
|
|
|
- this.dataSourceConfig = dataSourceConfig;
|
|
|
- handlerDataSource(dataSourceConfig);
|
|
|
- // 策略配置
|
|
|
- if (null == strategyConfig) {
|
|
|
- this.strategyConfig = new StrategyConfig();
|
|
|
- } else {
|
|
|
- this.strategyConfig = strategyConfig;
|
|
|
- }
|
|
|
- handlerStrategy(this.strategyConfig);
|
|
|
- }
|
|
|
-
|
|
|
- // ************************ 曝露方法 BEGIN*****************************
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 所有包配置信息
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @return 包配置
|
|
|
- */
|
|
|
- public Map<String, String> getPackageInfo() {
|
|
|
- return packageInfo;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 所有路径配置
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @return 路径配置
|
|
|
- */
|
|
|
- public Map<String, String> getPathInfo() {
|
|
|
- return pathInfo;
|
|
|
- }
|
|
|
-
|
|
|
- public String getSuperEntityClass() {
|
|
|
- return superEntityClass;
|
|
|
- }
|
|
|
-
|
|
|
- public String getSuperMapperClass() {
|
|
|
- return superMapperClass;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 获取超类定义
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @return 完整超类名称
|
|
|
- */
|
|
|
- public String getSuperServiceClass() {
|
|
|
- return superServiceClass;
|
|
|
- }
|
|
|
-
|
|
|
- public String getSuperServiceImplClass() {
|
|
|
- return superServiceImplClass;
|
|
|
- }
|
|
|
-
|
|
|
- public String getSuperControllerClass() {
|
|
|
- return superControllerClass;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 表信息
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @return 所有表信息
|
|
|
- */
|
|
|
- public List<TableInfo> getTableInfoList() {
|
|
|
- return tableInfoList;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 模板路径配置信息
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @return 所以模板路径配置信息
|
|
|
- */
|
|
|
- public TemplateConfig getTemplate() {
|
|
|
- return template == null ? new TemplateConfig() : template;
|
|
|
- }
|
|
|
-
|
|
|
- // ****************************** 曝露方法 END**********************************
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理包配置
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param template TemplateConfig
|
|
|
- * @param outputDir
|
|
|
- * @param config PackageConfig
|
|
|
- */
|
|
|
- private void handlerPackage(TemplateConfig template, String outputDir, PackageConfig config) {
|
|
|
- packageInfo = new HashMap<>();
|
|
|
- packageInfo.put(ConstVal.MODULENAME, config.getModuleName());
|
|
|
- packageInfo.put(ConstVal.ENTITY, joinPackage(config.getParent(), config.getEntity()));
|
|
|
- packageInfo.put(ConstVal.MAPPER, joinPackage(config.getParent(), config.getMapper()));
|
|
|
- packageInfo.put(ConstVal.XML, joinPackage(config.getParent(), config.getXml()));
|
|
|
- packageInfo.put(ConstVal.SERIVCE, joinPackage(config.getParent(), config.getService()));
|
|
|
- packageInfo.put(ConstVal.SERVICEIMPL, joinPackage(config.getParent(), config.getServiceImpl()));
|
|
|
- packageInfo.put(ConstVal.CONTROLLER, joinPackage(config.getParent(), config.getController()));
|
|
|
-
|
|
|
- // 生成路径信息
|
|
|
- pathInfo = new HashMap<>();
|
|
|
- if (StringUtils.isNotEmpty(template.getEntity(getGlobalConfig().isKotlin()))) {
|
|
|
- pathInfo.put(ConstVal.ENTITY_PATH, joinPath(outputDir, packageInfo.get(ConstVal.ENTITY)));
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(template.getMapper())) {
|
|
|
- pathInfo.put(ConstVal.MAPPER_PATH, joinPath(outputDir, packageInfo.get(ConstVal.MAPPER)));
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(template.getXml())) {
|
|
|
- pathInfo.put(ConstVal.XML_PATH, joinPath(outputDir, packageInfo.get(ConstVal.XML)));
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(template.getService())) {
|
|
|
- pathInfo.put(ConstVal.SERIVCE_PATH, joinPath(outputDir, packageInfo.get(ConstVal.SERIVCE)));
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(template.getServiceImpl())) {
|
|
|
- pathInfo.put(ConstVal.SERVICEIMPL_PATH, joinPath(outputDir, packageInfo.get(ConstVal.SERVICEIMPL)));
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(template.getController())) {
|
|
|
- pathInfo.put(ConstVal.CONTROLLER_PATH, joinPath(outputDir, packageInfo.get(ConstVal.CONTROLLER)));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理数据源配置
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param config DataSourceConfig
|
|
|
- */
|
|
|
- private void handlerDataSource(DataSourceConfig config) {
|
|
|
- connection = config.getConn();
|
|
|
- querySQL = getQuerySQL(config.getDbType());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理数据库表 加载数据库表、列、注释相关数据集
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param config StrategyConfig
|
|
|
- */
|
|
|
- private void handlerStrategy(StrategyConfig config) {
|
|
|
- processTypes(config);
|
|
|
- tableInfoList = getTablesInfo(config);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理superClassName,IdClassType,IdStrategy配置
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param config 策略配置
|
|
|
- */
|
|
|
- private void processTypes(StrategyConfig config) {
|
|
|
- if (StringUtils.isEmpty(config.getSuperServiceClass())) {
|
|
|
- superServiceClass = ConstVal.SUPERD_SERVICE_CLASS;
|
|
|
- } else {
|
|
|
- superServiceClass = config.getSuperServiceClass();
|
|
|
- }
|
|
|
- if (StringUtils.isEmpty(config.getSuperServiceImplClass())) {
|
|
|
- superServiceImplClass = ConstVal.SUPERD_SERVICEIMPL_CLASS;
|
|
|
- } else {
|
|
|
- superServiceImplClass = config.getSuperServiceImplClass();
|
|
|
- }
|
|
|
- if (StringUtils.isEmpty(config.getSuperMapperClass())) {
|
|
|
- superMapperClass = ConstVal.SUPERD_MAPPER_CLASS;
|
|
|
- } else {
|
|
|
- superMapperClass = config.getSuperMapperClass();
|
|
|
- }
|
|
|
- superEntityClass = config.getSuperEntityClass();
|
|
|
- superControllerClass = config.getSuperControllerClass();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理表对应的类名称
|
|
|
- * </P>
|
|
|
- *
|
|
|
- * @param tableList 表名称
|
|
|
- * @param strategy 命名策略
|
|
|
- * @param tablePrefix
|
|
|
- * @return 补充完整信息后的表
|
|
|
- */
|
|
|
- private List<TableInfo> processTable(List<TableInfo> tableList, NamingStrategy strategy, String[] tablePrefix) {
|
|
|
- for (TableInfo tableInfo : tableList) {
|
|
|
- tableInfo.setEntityName(strategyConfig, NamingStrategy.capitalFirst(processName(tableInfo.getName(), strategy, tablePrefix)));
|
|
|
- if (StringUtils.isNotEmpty(globalConfig.getMapperName())) {
|
|
|
- tableInfo.setMapperName(String.format(globalConfig.getMapperName(), tableInfo.getEntityName()));
|
|
|
- } else {
|
|
|
- tableInfo.setMapperName(tableInfo.getEntityName() + ConstVal.MAPPER);
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(globalConfig.getXmlName())) {
|
|
|
- tableInfo.setXmlName(String.format(globalConfig.getXmlName(), tableInfo.getEntityName()));
|
|
|
- } else {
|
|
|
- tableInfo.setXmlName(tableInfo.getEntityName() + ConstVal.MAPPER);
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(globalConfig.getServiceName())) {
|
|
|
- tableInfo.setServiceName(String.format(globalConfig.getServiceName(), tableInfo.getEntityName()));
|
|
|
- } else {
|
|
|
- tableInfo.setServiceName("I" + tableInfo.getEntityName() + ConstVal.SERIVCE);
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(globalConfig.getServiceImplName())) {
|
|
|
- tableInfo.setServiceImplName(String.format(globalConfig.getServiceImplName(), tableInfo.getEntityName()));
|
|
|
- } else {
|
|
|
- tableInfo.setServiceImplName(tableInfo.getEntityName() + ConstVal.SERVICEIMPL);
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(globalConfig.getControllerName())) {
|
|
|
- tableInfo.setControllerName(String.format(globalConfig.getControllerName(), tableInfo.getEntityName()));
|
|
|
- } else {
|
|
|
- tableInfo.setControllerName(tableInfo.getEntityName() + ConstVal.CONTROLLER);
|
|
|
- }
|
|
|
- }
|
|
|
- return tableList;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 获取所有的数据库表信息
|
|
|
- * </p>
|
|
|
- */
|
|
|
- private List<TableInfo> getTablesInfo(StrategyConfig config) {
|
|
|
- boolean isInclude = (null != config.getInclude() && config.getInclude().length > 0);
|
|
|
- boolean isExclude = (null != config.getExclude() && config.getExclude().length > 0);
|
|
|
- if (isInclude && isExclude) {
|
|
|
- throw new RuntimeException("<strategy> 标签中 <include> 与 <exclude> 只能配置一项!");
|
|
|
- }
|
|
|
- //所有的表信息
|
|
|
- List<TableInfo> tableList = new ArrayList<>();
|
|
|
-
|
|
|
- //需要反向生成或排除的表信息
|
|
|
- List<TableInfo> includeTableList = new ArrayList<>();
|
|
|
- List<TableInfo> excludeTableList = new ArrayList<>();
|
|
|
-
|
|
|
- //不存在的表名
|
|
|
- Set<String> notExistTables = new HashSet<>();
|
|
|
-
|
|
|
- NamingStrategy strategy = config.getNaming();
|
|
|
- PreparedStatement preparedStatement = null;
|
|
|
- try {
|
|
|
- String tableCommentsSql = querySQL.getTableCommentsSql();
|
|
|
- if (QuerySQL.POSTGRE_SQL == querySQL) {
|
|
|
- tableCommentsSql = String.format(tableCommentsSql, dataSourceConfig.getSchemaname());
|
|
|
- }
|
|
|
- preparedStatement = connection.prepareStatement(tableCommentsSql);
|
|
|
- ResultSet results = preparedStatement.executeQuery();
|
|
|
- TableInfo tableInfo;
|
|
|
- while (results.next()) {
|
|
|
- String tableName = results.getString(querySQL.getTableName());
|
|
|
- if (StringUtils.isNotEmpty(tableName)) {
|
|
|
- String tableComment = results.getString(querySQL.getTableComment());
|
|
|
- tableInfo = new TableInfo();
|
|
|
- tableInfo.setName(tableName);
|
|
|
- tableInfo.setComment(tableComment);
|
|
|
- if (isInclude) {
|
|
|
- for (String includeTab : config.getInclude()) {
|
|
|
- if (includeTab.equalsIgnoreCase(tableName)) {
|
|
|
- includeTableList.add(tableInfo);
|
|
|
- } else {
|
|
|
- notExistTables.add(includeTab);
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (isExclude) {
|
|
|
- for (String excludeTab : config.getExclude()) {
|
|
|
- if (excludeTab.equalsIgnoreCase(tableName)) {
|
|
|
- excludeTableList.add(tableInfo);
|
|
|
- } else {
|
|
|
- notExistTables.add(excludeTab);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- tableList.add(this.convertTableFields(tableInfo, strategy));
|
|
|
- } else {
|
|
|
- System.err.println("当前数据库为空!!!");
|
|
|
- }
|
|
|
- }
|
|
|
- // 将已经存在的表移除,获取配置中数据库不存在的表
|
|
|
- for (TableInfo tabInfo : tableList) {
|
|
|
- notExistTables.remove(tabInfo.getName());
|
|
|
- }
|
|
|
-
|
|
|
- if (notExistTables.size() > 0) {
|
|
|
- System.err.println("表 " + notExistTables + " 在数据库中不存在!!!");
|
|
|
- }
|
|
|
-
|
|
|
- // 需要反向生成的表信息
|
|
|
- if (isExclude) {
|
|
|
- tableList.removeAll(excludeTableList);
|
|
|
- includeTableList = tableList;
|
|
|
- }
|
|
|
- if (!isInclude && !isExclude) {
|
|
|
- includeTableList = tableList;
|
|
|
- }
|
|
|
- } catch (SQLException e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- // 释放资源
|
|
|
- try {
|
|
|
- if (preparedStatement != null) {
|
|
|
- preparedStatement.close();
|
|
|
- }
|
|
|
- if (connection != null) {
|
|
|
- connection.close();
|
|
|
- }
|
|
|
- } catch (SQLException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- return processTable(includeTableList, strategy, config.getTablePrefix());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 判断主键是否为identity,目前仅对mysql进行检查
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param results ResultSet
|
|
|
- * @return 主键是否为identity
|
|
|
- * @throws SQLException
|
|
|
- */
|
|
|
- private boolean isKeyIdentity(ResultSet results) throws SQLException {
|
|
|
- if (QuerySQL.MYSQL == this.querySQL) {
|
|
|
- String extra = results.getString("Extra");
|
|
|
- if ("auto_increment".equals(extra)) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- } else if (QuerySQL.SQL_SERVER == this.querySQL) {
|
|
|
- int isIdentity = results.getInt("isIdentity");
|
|
|
- return 1 == isIdentity;
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 将字段信息与表信息关联
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param tableInfo 表信息
|
|
|
- * @param strategy 命名策略
|
|
|
- * @return
|
|
|
- */
|
|
|
- private TableInfo convertTableFields(TableInfo tableInfo, NamingStrategy strategy) {
|
|
|
- boolean haveId = false;
|
|
|
- List<TableField> fieldList = new ArrayList<>();
|
|
|
- List<TableField> commonFieldList = new ArrayList<>();
|
|
|
- try {
|
|
|
- String tableFieldsSql = querySQL.getTableFieldsSql();
|
|
|
- if (QuerySQL.POSTGRE_SQL == querySQL) {
|
|
|
- tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaname(), tableInfo.getName());
|
|
|
- } else {
|
|
|
- tableFieldsSql = String.format(tableFieldsSql, tableInfo.getName());
|
|
|
- }
|
|
|
- PreparedStatement preparedStatement = connection.prepareStatement(tableFieldsSql);
|
|
|
- ResultSet results = preparedStatement.executeQuery();
|
|
|
- while (results.next()) {
|
|
|
- TableField field = new TableField();
|
|
|
- String key = results.getString(querySQL.getFieldKey());
|
|
|
- // 避免多重主键设置,目前只取第一个找到ID,并放到list中的索引为0的位置
|
|
|
- boolean isId = StringUtils.isNotEmpty(key) && key.toUpperCase().equals("PRI");
|
|
|
- // 处理ID
|
|
|
- if (isId && !haveId) {
|
|
|
- field.setKeyFlag(true);
|
|
|
- if (isKeyIdentity(results)) {
|
|
|
- field.setKeyIdentityFlag(true);
|
|
|
- }
|
|
|
- haveId = true;
|
|
|
- } else {
|
|
|
- field.setKeyFlag(false);
|
|
|
- }
|
|
|
- // 处理其它信息
|
|
|
- field.setName(results.getString(querySQL.getFieldName()));
|
|
|
- field.setType(results.getString(querySQL.getFieldType()));
|
|
|
- field.setPropertyName(strategyConfig, processName(field.getName(), strategy));
|
|
|
- field.setColumnType(dataSourceConfig.getTypeConvert().processTypeConvert(field.getType()));
|
|
|
- field.setComment(results.getString(querySQL.getFieldComment()));
|
|
|
- if (strategyConfig.includeSuperEntityColumns(field.getName())) {
|
|
|
- // 跳过公共字段
|
|
|
- commonFieldList.add(field);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 填充逻辑判断
|
|
|
- List<TableFill> tableFillList = this.getStrategyConfig().getTableFillList();
|
|
|
- if (null != tableFillList) {
|
|
|
- for (TableFill tableFill : tableFillList) {
|
|
|
- if (tableFill.getFieldName().equals(field.getName())) {
|
|
|
- field.setFill(tableFill.getFieldFill().name());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- fieldList.add(field);
|
|
|
- }
|
|
|
- } catch (SQLException e) {
|
|
|
- System.err.println("SQL Exception:" + e.getMessage());
|
|
|
- }
|
|
|
- tableInfo.setFields(fieldList);
|
|
|
- tableInfo.setCommonFields(commonFieldList);
|
|
|
- return tableInfo;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 连接路径字符串
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param parentDir 路径常量字符串
|
|
|
- * @param packageName 包名
|
|
|
- * @return 连接后的路径
|
|
|
- */
|
|
|
- private String joinPath(String parentDir, String packageName) {
|
|
|
- if (StringUtils.isEmpty(parentDir)) {
|
|
|
- parentDir = System.getProperty(ConstVal.JAVA_TMPDIR);
|
|
|
- }
|
|
|
- if (!StringUtils.endsWith(parentDir, File.separator)) {
|
|
|
- parentDir += File.separator;
|
|
|
- }
|
|
|
- packageName = packageName.replaceAll("\\.", "\\" + File.separator);
|
|
|
- return parentDir + packageName;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 连接父子包名
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param parent 父包名
|
|
|
- * @param subPackage 子包名
|
|
|
- * @return 连接后的包名
|
|
|
- */
|
|
|
- private String joinPackage(String parent, String subPackage) {
|
|
|
- if (StringUtils.isEmpty(parent)) {
|
|
|
- return subPackage;
|
|
|
- }
|
|
|
- return parent + "." + subPackage;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理字段名称
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @return 根据策略返回处理后的名称
|
|
|
- */
|
|
|
- private String processName(String name, NamingStrategy strategy) {
|
|
|
- return processName(name, strategy, null);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 处理字段名称
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param name
|
|
|
- * @param strategy
|
|
|
- * @param tablePrefix
|
|
|
- * @return 根据策略返回处理后的名称
|
|
|
- */
|
|
|
- private String processName(String name, NamingStrategy strategy, String[] tablePrefix) {
|
|
|
- boolean removePrefix = false;
|
|
|
- if (tablePrefix != null && tablePrefix.length >= 1) {
|
|
|
- removePrefix = true;
|
|
|
- }
|
|
|
- String propertyName;
|
|
|
- if (removePrefix) {
|
|
|
- if (strategy == NamingStrategy.underline_to_camel) {
|
|
|
- // 删除前缀、下划线转驼峰
|
|
|
- propertyName = NamingStrategy.removePrefixAndCamel(name, tablePrefix);
|
|
|
- } else {
|
|
|
- // 删除前缀
|
|
|
- propertyName = NamingStrategy.removePrefix(name, tablePrefix);
|
|
|
- }
|
|
|
- } else if (strategy == NamingStrategy.underline_to_camel) {
|
|
|
- // 下划线转驼峰
|
|
|
- propertyName = NamingStrategy.underlineToCamel(name);
|
|
|
- } else {
|
|
|
- // 不处理
|
|
|
- propertyName = name;
|
|
|
- }
|
|
|
- return propertyName;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取当前的SQL类型
|
|
|
- *
|
|
|
- * @return DB类型
|
|
|
- */
|
|
|
- private QuerySQL getQuerySQL(DbType dbType) {
|
|
|
- for (QuerySQL qs : QuerySQL.values()) {
|
|
|
- if (qs.getDbType().equals(dbType.getValue())) {
|
|
|
- return qs;
|
|
|
- }
|
|
|
- }
|
|
|
- return QuerySQL.MYSQL;
|
|
|
- }
|
|
|
-
|
|
|
- public StrategyConfig getStrategyConfig() {
|
|
|
- return strategyConfig;
|
|
|
- }
|
|
|
-
|
|
|
- public ConfigBuilder setStrategyConfig(StrategyConfig strategyConfig) {
|
|
|
- this.strategyConfig = strategyConfig;
|
|
|
- return this;
|
|
|
- }
|
|
|
-
|
|
|
- public GlobalConfig getGlobalConfig() {
|
|
|
- return globalConfig;
|
|
|
- }
|
|
|
-
|
|
|
- public ConfigBuilder setGlobalConfig(GlobalConfig globalConfig) {
|
|
|
- this.globalConfig = globalConfig;
|
|
|
- return this;
|
|
|
- }
|
|
|
-
|
|
|
-}
|