From 726d9fd4e5a5b03ad3edd72a3d8ce0826324d94a Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Tue, 5 Jan 2021 00:24:58 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9A=E5=8A=A8=E6=80=81=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=BC=96=E8=AF=91=E5=BC=95=E6=93=8E=E6=88=90=E7=86=9F?= =?UTF-8?q?=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/compiler/support/JavaSource.java | 6 ++++++ .../flyfish/framework/domain/base/NameLikeQo.java | 4 +--- .../framework/beans/annotations/RestBean.java | 3 ++- .../framework/config/RestBeanAutoConfigure.java | 13 ++++++++++++- .../src/main/resources/templates/Controller.tpl | 2 +- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/flyfish-common/src/main/java/com/flyfish/framework/compiler/support/JavaSource.java b/flyfish-common/src/main/java/com/flyfish/framework/compiler/support/JavaSource.java index ed9fbe4..da7a636 100644 --- a/flyfish-common/src/main/java/com/flyfish/framework/compiler/support/JavaSource.java +++ b/flyfish-common/src/main/java/com/flyfish/framework/compiler/support/JavaSource.java @@ -47,4 +47,10 @@ public class JavaSource { public String getQueryBeanClassName() { return StringUtils.substringAfterLast(queryBeanClass, "."); } + + // 获取限定查询实体的后缀 + public String getQueryBeanSuffix() { + String beanClassName = getBeanClassName(); + return queryBeanClass.contains(beanClassName) ? "" : "<" + beanClassName + ">"; + } } diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java index 0686a8f..0932853 100644 --- a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java +++ b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java @@ -1,8 +1,6 @@ package com.flyfish.framework.domain.base; import com.flyfish.framework.builder.CriteriaBuilder; -import com.flyfish.framework.domain.base.BaseQo; -import com.flyfish.framework.domain.base.Domain; import lombok.Getter; import lombok.Setter; import org.springframework.data.domain.Sort; @@ -16,7 +14,7 @@ import java.util.Collection; */ @Getter @Setter -public abstract class NameLikeQo extends BaseQo { +public class NameLikeQo extends BaseQo { protected String name; diff --git a/flyfish-web/src/main/java/com/flyfish/framework/beans/annotations/RestBean.java b/flyfish-web/src/main/java/com/flyfish/framework/beans/annotations/RestBean.java index 71e3799..6eb3045 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/beans/annotations/RestBean.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/beans/annotations/RestBean.java @@ -2,6 +2,7 @@ package com.flyfish.framework.beans.annotations; import com.flyfish.framework.controller.BaseController; import com.flyfish.framework.controller.SafeController; +import com.flyfish.framework.domain.base.NameLikeQo; import com.flyfish.framework.domain.base.Qo; import com.flyfish.framework.repository.DefaultRepository; import com.flyfish.framework.service.BaseService; @@ -34,7 +35,7 @@ public @interface RestBean { * 必须指定qo * @return 结果 */ - Class> queryClass(); + Class queryClass() default NameLikeQo.class; /** * 仓库的超类,默认是default diff --git a/flyfish-web/src/main/java/com/flyfish/framework/config/RestBeanAutoConfigure.java b/flyfish-web/src/main/java/com/flyfish/framework/config/RestBeanAutoConfigure.java index 169bdd5..654cb83 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/config/RestBeanAutoConfigure.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/config/RestBeanAutoConfigure.java @@ -86,7 +86,7 @@ public class RestBeanAutoConfigure implements ImportBeanDefinitionRegistrar, Res .setBeanClass(clazz.getCanonicalName()) .setQueryBeanClass(restBean.queryClass().getCanonicalName()) .setPackageName(basePackages.stream().findFirst().orElse("com.flyfish.project")) - .setUri(StringUtils.isBlank(restBean.value()) ? StringFormats.camel2Line(clazz.getSimpleName()) : restBean.value()); + .setUri(makePath(clazz.getSimpleName(), restBean.value())); // 分别生成实现类,从repo到controller templates.forEach((key, template) -> { source.setSuperClass(superClasses.get(key).apply(restBean).getCanonicalName()); @@ -134,6 +134,17 @@ public class RestBeanAutoConfigure implements ImportBeanDefinitionRegistrar, Res } } + /** + * 创建路径,缺省加s,对于错误拼写需要直接指定 + * + * @param className 类名 + * @param uri 路径 + * @return 结果 + */ + private String makePath(String className, String uri) { + return StringUtils.isBlank(uri) ? (StringFormats.camel2Line(className) + "s") : uri; + } + /** * 获取基本扫描包路径 * diff --git a/flyfish-web/src/main/resources/templates/Controller.tpl b/flyfish-web/src/main/resources/templates/Controller.tpl index ac0dd65..8d09af3 100644 --- a/flyfish-web/src/main/resources/templates/Controller.tpl +++ b/flyfish-web/src/main/resources/templates/Controller.tpl @@ -8,6 +8,6 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("#{uri}") -public class #{className} extends #{superClassName}<#{beanClassName}, #{queryBeanClassName}> { +public class #{className} extends #{superClassName}<#{beanClassName}, #{queryBeanClassName}#{queryBeanSuffix}> { } \ No newline at end of file