From de1fd9123f0d5721c35d3f1a76063b7877da700d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=AF=BA?= <1253070437@qq.com> Date: Fri, 12 Mar 2021 20:23:18 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E6=94=AF=E6=8C=81oracle=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=9B=B4=E8=BF=9E=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?number=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0oracle=E8=8F=9C=E5=8D=95sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiaonuo/core/consts/CommonConstant.java | 10 +++++ .../xiaonuo/generate/core/config/Config.java | 9 ++-- .../generate/core/tool/JavaSqlTool.java | 2 + .../cn/xiaonuo/generate/core/util/Util.java | 23 ++++++++++- .../mapper/mapping/CodeGenerateMapper.xml | 41 ++++++++++++++++--- .../service/impl/CodeGenerateServiceImpl.java | 27 +++--------- .../SysCodeGenerateConfigServiceImpl.java | 6 +-- .../main/resources/template/XnOracle.sql.vm | 34 +++++++++++++++ .../core/listener/ConstantsInitListener.java | 16 ++++++-- 9 files changed, 130 insertions(+), 38 deletions(-) create mode 100644 xiaonuo-base/xiaonuo-gen/src/main/resources/template/XnOracle.sql.vm diff --git a/xiaonuo-base/xiaonuo-core/src/main/java/com/cn/xiaonuo/core/consts/CommonConstant.java b/xiaonuo-base/xiaonuo-core/src/main/java/com/cn/xiaonuo/core/consts/CommonConstant.java index db881adb..5d4e6592 100644 --- a/xiaonuo-base/xiaonuo-core/src/main/java/com/cn/xiaonuo/core/consts/CommonConstant.java +++ b/xiaonuo-base/xiaonuo-core/src/main/java/com/cn/xiaonuo/core/consts/CommonConstant.java @@ -112,6 +112,16 @@ public interface CommonConstant { */ String DATABASE_URL_NAME = "DATABASE_URL_NAME"; + /** + * 数据库链接驱动标识 + */ + String DATABASE_DRIVER_NAME = "DATABASE_DRIVER_NAME"; + + /** + * 数据库用户标识 + */ + String DATABASE_USER_NAME = "DATABASE_USER_NAME"; + /** * 点选验证码 */ diff --git a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/config/Config.java b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/config/Config.java index 4337e1c7..1f3f8f51 100644 --- a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/config/Config.java +++ b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/config/Config.java @@ -71,7 +71,8 @@ public class Config { public static String vueIndexPath; public static String vueAddFromPath; public static String vueEditFromPath; - public static String sqlPath; + public static String mysqlSqlPath; + public static String oracleSqlPath; /** * 各个代码存放路径文件夹 @@ -90,9 +91,10 @@ public class Config { vueIndexPath = BASE_VUE_PAHT + FILE_SEP + "views" + FILE_SEP + "main" + FILE_SEP + busName + FILE_SEP; vueAddFromPath = BASE_VUE_PAHT + FILE_SEP + "views" + FILE_SEP + "main" + FILE_SEP + busName + FILE_SEP; vueEditFromPath = BASE_VUE_PAHT + FILE_SEP + "views" + FILE_SEP + "main" + FILE_SEP + busName + FILE_SEP; - sqlPath = BASE_SQL_PAHT; + mysqlSqlPath = BASE_SQL_PAHT; + oracleSqlPath = BASE_SQL_PAHT; return new String[] { - controllerPath, entityPath, enumsPath, mapperPath, mappingPath, paramPath, servicePath, serviceImplPath, manageJsPath, vueIndexPath, vueAddFromPath, vueEditFromPath, sqlPath + controllerPath, entityPath, enumsPath, mapperPath, mappingPath, paramPath, servicePath, serviceImplPath, manageJsPath, vueIndexPath, vueAddFromPath, vueEditFromPath, mysqlSqlPath, oracleSqlPath }; } @@ -113,6 +115,7 @@ public class Config { "addForm.vue.vm", "editForm.vue.vm", "XnMysql.sql.vm", + "XnOracle.sql.vm", }; /** diff --git a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/tool/JavaSqlTool.java b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/tool/JavaSqlTool.java index 01e6d340..51a8045c 100644 --- a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/tool/JavaSqlTool.java +++ b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/tool/JavaSqlTool.java @@ -19,6 +19,7 @@ public class JavaSqlTool { sqlType = sqlType.toLowerCase(); switch(sqlType){ case "nvarchar":return "String"; + case "nvarchar2":return "String"; case "char":return "String"; case "varchar":return "String"; case "text":return "String"; @@ -31,6 +32,7 @@ public class JavaSqlTool { case "mediumint":return "Integer"; case "bit":return "Boolean"; case "bigint":return "Long"; + case "number":return "Long"; case "float":return "Fload"; case "double":return "Double"; case "decimal":return "BigDecimal"; diff --git a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/util/Util.java b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/util/Util.java index 21a19c81..77d88a97 100644 --- a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/util/Util.java +++ b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/core/util/Util.java @@ -1,5 +1,8 @@ package com.cn.xiaonuo.generate.core.util; +import com.cn.xiaonuo.core.consts.CommonConstant; +import com.cn.xiaonuo.core.context.constant.ConstantContext; +import com.cn.xiaonuo.core.enums.DbIdEnum; import org.apache.commons.io.IOUtils; import org.apache.velocity.app.Velocity; @@ -58,7 +61,7 @@ public class Util { * @author yubaoshan * @date 2020年12月16日23:29:53 */ - public static int getIndex(String string, int i, String str) { + private static int getIndex(String string, int i, String str) { Matcher slashMatcher = Pattern.compile(str).matcher(string); int mIdx = 0; while (slashMatcher.find()) { @@ -71,4 +74,22 @@ public class Util { return slashMatcher.start(); } + /** + * 获取数据库用户 + * + * @author yubaoshan + * @date 2021-03-11 18:37:00 + */ + public static String getDataBasename () { + String dataUrl = ConstantContext.me().getStr(CommonConstant.DATABASE_URL_NAME); + String driverName = ConstantContext.me().getStr(CommonConstant.DATABASE_DRIVER_NAME); + if (driverName.contains(DbIdEnum.MS_SQL.getCode())) { + return dataUrl.substring(getIndex(dataUrl, 3, "/") + 1, dataUrl.indexOf("?")); + } else if (driverName.contains(DbIdEnum.ORACLE.getCode())) { + return ConstantContext.me().getStr(CommonConstant.DATABASE_USER_NAME); + } else { + return ""; + } + } + } diff --git a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/mapper/mapping/CodeGenerateMapper.xml b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/mapper/mapping/CodeGenerateMapper.xml index 70d67740..cc0e1bb8 100644 --- a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/mapper/mapping/CodeGenerateMapper.xml +++ b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/mapper/mapping/CodeGenerateMapper.xml @@ -17,20 +17,51 @@ - select table_name,create_time,update_time,table_comment - from information_schema.tables - where - table_schema = '${dbName}' + from information_schema.tables + where + table_schema = '${dbName}' + + - select column_name,data_type,column_comment,column_key from information_schema.columns where table_schema = '${dbName}' and table_name = '${tableName}'; + diff --git a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/CodeGenerateServiceImpl.java b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/CodeGenerateServiceImpl.java index 986c1d0c..17804908 100644 --- a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/CodeGenerateServiceImpl.java +++ b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/CodeGenerateServiceImpl.java @@ -28,20 +28,13 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.cn.xiaonuo.core.consts.CommonConstant; -import com.cn.xiaonuo.core.context.constant.ConstantContext; -import com.cn.xiaonuo.core.enums.YesOrNotEnum; import com.cn.xiaonuo.core.exception.ServiceException; import com.cn.xiaonuo.core.factory.PageFactory; import com.cn.xiaonuo.core.pojo.page.PageResult; import com.cn.xiaonuo.generate.core.context.XnVelocityContext; -import com.cn.xiaonuo.generate.core.param.TableField; import com.cn.xiaonuo.generate.core.param.XnCodeGenParam; -import com.cn.xiaonuo.generate.core.tool.JavaSqlTool; -import com.cn.xiaonuo.generate.core.tool.NamingConTool; import com.cn.xiaonuo.generate.core.tool.StringDateTool; import com.cn.xiaonuo.generate.core.config.Config; -import com.cn.xiaonuo.generate.core.enums.TableFilteredFieldsEnum; import com.cn.xiaonuo.generate.core.util.Util; import com.cn.xiaonuo.generate.modular.entity.CodeGenerate; import com.cn.xiaonuo.generate.modular.entity.SysCodeGenerateConfig; @@ -53,25 +46,20 @@ import com.cn.xiaonuo.generate.modular.result.InforMationColumnsResult; import com.cn.xiaonuo.generate.modular.result.InformationResult; import com.cn.xiaonuo.generate.modular.service.CodeGenerateService; import com.cn.xiaonuo.generate.modular.service.SysCodeGenerateConfigService; -import com.cn.xiaonuo.sys.modular.menu.entity.SysMenu; -import com.cn.xiaonuo.sys.modular.menu.mapper.SysMenuMapper; import org.apache.commons.io.IOUtils; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import org.springframework.stereotype.Service; - import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; -import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; - /** * 代码生成基础配置service接口实现类 * @@ -172,9 +160,7 @@ public class CodeGenerateServiceImpl extends ServiceImpl InformationTableList () { - String databaseUrl = ConstantContext.me().getStr(CommonConstant.DATABASE_URL_NAME); - String dbName = databaseUrl.substring(Util.getIndex(databaseUrl, 3, "/") + 1, databaseUrl.indexOf("?")); - return this.baseMapper.selectInformationTable(dbName); + return this.baseMapper.selectInformationTable(Util.getDataBasename()); } @Override @@ -196,11 +182,10 @@ public class CodeGenerateServiceImpl extends ServiceImpl inforMationColumnsResultList = this.baseMapper.selectInformationColumns(dbName, tableName); + List inforMationColumnsResultList = this.baseMapper.selectInformationColumns(Util.getDataBasename(), tableName); for (int a = 0; a < inforMationColumnsResultList.size(); a++) { - if (inforMationColumnsResultList.get(a).columnKey.equals(Config.DB_TABLE_COM_KRY)) { + if (ObjectUtil.isNotNull(inforMationColumnsResultList.get(a).columnKey) + && inforMationColumnsResultList.get(a).columnKey.equals(Config.DB_TABLE_COM_KRY)) { return true; } } @@ -234,9 +219,7 @@ public class CodeGenerateServiceImpl extends ServiceImpl getInforMationColumnsResultList (CodeGenerateParam codeGenerateParam) { CodeGenerate codeGenerate = this.queryCodeGenerate(codeGenerateParam); - String databaseUrl = ConstantContext.me().getStr(CommonConstant.DATABASE_URL_NAME); - String dbName = databaseUrl.substring(Util.getIndex(databaseUrl, 3, "/") + 1, databaseUrl.indexOf("?")); - return this.baseMapper.selectInformationColumns(dbName, codeGenerate.getTableName()); + return this.baseMapper.selectInformationColumns(Util.getDataBasename(), codeGenerate.getTableName()); } private XnCodeGenParam copyParams (CodeGenerateParam codeGenerateParam) { diff --git a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/SysCodeGenerateConfigServiceImpl.java b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/SysCodeGenerateConfigServiceImpl.java index 307943a6..8f9db3ec 100644 --- a/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/SysCodeGenerateConfigServiceImpl.java +++ b/xiaonuo-base/xiaonuo-gen/src/main/java/com/cn/xiaonuo/generate/modular/service/impl/SysCodeGenerateConfigServiceImpl.java @@ -27,12 +27,9 @@ package com.cn.xiaonuo.generate.modular.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cn.xiaonuo.core.enums.YesOrNotEnum; import com.cn.xiaonuo.core.exception.ServiceException; -import com.cn.xiaonuo.core.factory.PageFactory; -import com.cn.xiaonuo.core.pojo.page.PageResult; import com.cn.xiaonuo.generate.core.config.Config; import com.cn.xiaonuo.generate.core.enums.QueryTypeEnum; import com.cn.xiaonuo.generate.core.enums.TableFilteredFieldsEnum; @@ -85,7 +82,8 @@ public class SysCodeGenerateConfigServiceImpl extends ServiceImpl ConstantContext.putConstant( - sysConfig.getStr("code") == null ? sysConfig.getStr("CODE") : sysConfig.getStr("code"), - sysConfig.getStr("value") == null ? sysConfig.getStr("VALUE") : sysConfig.getStr("value") + sysConfig.getStr(CODE) == null ? sysConfig.getStr(CAPITAL_CODE) : sysConfig.getStr(CODE), + sysConfig.getStr(VALUE) == null ? sysConfig.getStr(CAPITAL_VALUE) : sysConfig.getStr(VALUE) ) ); }