From 452c52140e66d771bdeed83b0b9721be26622840 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Tue, 30 Mar 2021 22:30:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0db=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/annotations/DBRefValue.java | 24 +++++++++++++++++++ .../framework/beans/meta/BeanProperty.java | 15 +++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 flyfish-data/src/main/java/com/flyfish/framework/annotations/DBRefValue.java diff --git a/flyfish-data/src/main/java/com/flyfish/framework/annotations/DBRefValue.java b/flyfish-data/src/main/java/com/flyfish/framework/annotations/DBRefValue.java new file mode 100644 index 0000000..ad57bda --- /dev/null +++ b/flyfish-data/src/main/java/com/flyfish/framework/annotations/DBRefValue.java @@ -0,0 +1,24 @@ +package com.flyfish.framework.annotations; + +import com.flyfish.framework.domain.base.Po; + +import java.lang.annotation.*; + +/** + * 数据库值标记 + * + * @author wangyu + * 可以提供元数据的配置 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface DBRefValue { + + /** + * 提供明确的类型 + * + * @return 结果 + */ + Class value(); +} diff --git a/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java b/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java index 4a2677f..e88e1f5 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/beans/meta/BeanProperty.java @@ -1,9 +1,7 @@ package com.flyfish.framework.beans.meta; -import com.flyfish.framework.annotations.DictValue; -import com.flyfish.framework.annotations.EnumValue; +import com.flyfish.framework.annotations.*; import com.flyfish.framework.annotations.Properties; -import com.flyfish.framework.annotations.Property; import com.flyfish.framework.domain.base.Qo; import com.flyfish.framework.domain.base.Vo; import com.flyfish.framework.utils.DataUtils; @@ -106,8 +104,19 @@ public class BeanProperty { EnumValue enumValue = field.getAnnotation(EnumValue.class); String name = StringFormats.camel2Line(ClassUtils.getShortClassName(enumValue.value())); property.prop("code", name); + } else if (field.isAnnotationPresent(DBRefValue.class)) { + // 添加了数据库引用注解,自动注入类型给前端使用 + property.setType(BeanPropertyType.DB_REF); + DBRefValue dbRefValue = field.getAnnotation(DBRefValue.class); + Document document = AnnotationUtils.findAnnotation(dbRefValue.value(), Document.class); + if (null != document) { + property.prop("uri", document.value()); + } else { + property.setType(BeanPropertyType.STRING); + } } } + break; case LIST: // 尝试获取泛型参数,存在时,赋值子表单 if (null != field && field.isAnnotationPresent(SubBean.class)) {