diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseService.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseService.java index d5dfdefd..000153ed 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseService.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseService.java @@ -1,7 +1,7 @@ package com.ibeetl.admin.core.service; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.exceptions.UtilException; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.*; import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.annotation.DictDeep; @@ -417,17 +417,16 @@ public class CoreBaseService { try { String display = ""; - Method methodByName = ReflectUtil.getMethodByName(field.getType(), "get" + StrUtil.upperFirst(dict.value())); + Method methodByName = ReflectUtil.getMethodByName(bean.getClass(), "get" + StrUtil.upperFirst(dict.value())); + Assert.notNull(methodByName, field.getName() + " 缺少getter方法"); Object enumValue = ReflectUtil.invoke(field.get(ext), methodByName); if (ObjectUtil.isNotEmpty(enumValue)) { display = String.valueOf(enumValue); } ext.set(field.getName() + dict.suffix(), display); - } catch (UtilException e) { - throw new RuntimeException(field.getName() + " 缺少getter方法"); - } catch (Exception e) { - e.printStackTrace(); - } finally { + } catch (IllegalArgumentException | IllegalAccessException e) { + log.error("@DictEnum 注解解析异常: {}", e.getMessage()); + } finally { field.setAccessible(false); } } diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreCodeGenService.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreCodeGenService.java index 2ac2ee14..532251a2 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreCodeGenService.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreCodeGenService.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; /** * 代码生成,用于根据表或者视图生成entity,mapper,service,conroller @@ -39,10 +40,8 @@ public class CoreCodeGenService { public List getAllEntityInfo(){ MetadataManager meta = sqlManager.getMetaDataManager(); Set set = meta.allTable(); - List list = new ArrayList(); - for(String table:set) { - list.add(getEntitySimpleInfo(table)); - } + List list = new CopyOnWriteArrayList<>(); + set.parallelStream().forEach(table -> list.add(getEntitySimpleInfo(table))); return sortTableName(list); } diff --git a/web/src/main/resources/application-dev.properties b/web/src/main/resources/application-dev.properties index df60cea9..c7ff4bb1 100644 --- a/web/src/main/resources/application-dev.properties +++ b/web/src/main/resources/application-dev.properties @@ -6,22 +6,16 @@ spring.datasource.dynamic.hikari.max-pool-size=30 spring.datasource.dynamic.hikari.connection-test-query=SELECT 1 # master -#spring.datasource.dynamic.datasource.master.driverClassName=com.mysql.cj.jdbc.Driver -#spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/tzcj?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true -#spring.datasource.dynamic.datasource.master.username=root -#spring.datasource.dynamic.datasource.master.password=root - -# test spring.datasource.dynamic.datasource.master.driverClassName=com.mysql.cj.jdbc.Driver spring.datasource.dynamic.datasource.master.url=jdbc:mysql://124.223.219.235:3306/tzcj?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true spring.datasource.dynamic.datasource.master.username=root spring.datasource.dynamic.datasource.master.password=root # ds2 -#spring.datasource.dynamic.datasource.ds2.driverClassName=com.mysql.cj.jdbc.Driver -#spring.datasource.dynamic.datasource.ds2.url=jdbc:mysql://localhost:3306/tzcj2?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true -#spring.datasource.dynamic.datasource.ds2.username=root -#spring.datasource.dynamic.datasource.ds2.password=root +spring.datasource.dynamic.datasource.ds2.driverClassName=com.mysql.cj.jdbc.Driver +spring.datasource.dynamic.datasource.ds2.url=jdbc:mysql://124.223.219.235:3306/tzcj?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true +spring.datasource.dynamic.datasource.ds2.username=root +spring.datasource.dynamic.datasource.ds2.password=root # sqlManagers = \u591A\u4E2A sqlManager \u5217\u8868 dynamic.beetlsql.sqlManagers = master,ds2,cs diff --git a/web/src/main/resources/application-local.properties b/web/src/main/resources/application-local.properties new file mode 100644 index 00000000..8bce05bd --- /dev/null +++ b/web/src/main/resources/application-local.properties @@ -0,0 +1,51 @@ +# \u8BBE\u7F6E\u9ED8\u8BA4\u7684\u6570\u636E\u6E90\u6216\u8005\u6570\u636E\u6E90\u7EC4,\u9ED8\u8BA4\u503C\u5373\u4E3A ds1 +spring.datasource.dynamic.primary = master +spring.datasource.dynamic.p6spy = false +spring.datasource.dynamic.strict = false +spring.datasource.dynamic.hikari.max-pool-size=30 +spring.datasource.dynamic.hikari.connection-test-query=SELECT 1 + +# master +spring.datasource.dynamic.datasource.master.driverClassName=com.mysql.cj.jdbc.Driver +spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/tzcj?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true +spring.datasource.dynamic.datasource.master.username=root +spring.datasource.dynamic.datasource.master.password=root + +# ds2 +spring.datasource.dynamic.datasource.ds2.driverClassName=com.mysql.cj.jdbc.Driver +spring.datasource.dynamic.datasource.ds2.url=jdbc:mysql://localhost:3306/tzcj?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true +spring.datasource.dynamic.datasource.ds2.username=root +spring.datasource.dynamic.datasource.ds2.password=root + +# sqlManagers = \u591A\u4E2A sqlManager \u5217\u8868 +dynamic.beetlsql.sqlManagers = master,ds2,cs +# primary \u9ED8\u8BA4 sqlManager +dynamic.beetlsql.primary = cs +# transactionManager \u9ED8\u8BA4\u81EA\u52A8\u751F\u6210\uFF0C\u5982\u9700\u81EA\u5DF1\u7BA1\u7406\u5219\u8BBE\u7F6E\u4E3A false +# dynamic.beetlsql.transactionManager = false + +# \u9ED8\u8BA4\u503C _default +dynamic.beetlsql._default.dev = true + +# 1, \u914D\u7F6E\u5355\u72EC sqlManager +# A) \u540D\u79F0: ds1, dataSource \u540C\u540D\u79F0 ds1, \u6216 dynamic.beetlsql.ds1.ds = ds1 +dynamic.beetlsql.master.sqlPath = sql +dynamic.beetlsql.master.daoSuffix = Dao +dynamic.beetlsql.master.basePackage = com.ibeetl +dynamic.beetlsql.master.dbStyle = org.beetl.sql.core.db.MySqlStyle +dynamic.beetlsql.master.slave = ds2 + +# B) \u540D\u79F0: ds2, dataSource \u540C\u540D\u79F0 ds2, \u6216 dynamic.beetlsql.ds2.ds = ds2 +dynamic.beetlsql.ds2.sqlPath = sql +dynamic.beetlsql.ds2.daoSuffix = Dao +dynamic.beetlsql.ds2.basePackage = com.ibeetl +dynamic.beetlsql.ds2.dbStyle = org.beetl.sql.core.db.MySqlStyle + +# 3, dynamicConnectionSource \u6A21\u5F0F(\u53EF\u9009) +# \u4F7F\u7528\u4E00\u4E2A sqlManager \u5207\u6362, \u4F7F\u7528 ConditionalConnectionSource +dynamic.beetlsql.cs.sqlPath = sql +dynamic.beetlsql.cs.daoSuffix = Dao +dynamic.beetlsql.cs.basePackage = com.ibeetl +dynamic.beetlsql.cs.dbStyle = org.beetl.sql.core.db.MySqlStyle +# \u5FC5\u987B dynamicConnectionSource \u8868\u793A\u4F7F\u7528 ConditionalConnectionSource \u6A21\u5F0F +dynamic.beetlsql.cs.dynamicConnectionSource = master,ds2 \ No newline at end of file