From 898b519178475e1dd4de09551ad7601a7b9653b1 Mon Sep 17 00:00:00 2001 From: Tony Wang Date: Mon, 5 Jun 2017 23:42:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?sql=E6=94=AF=E6=8C=81=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jfaster/mango/annotation/SQL.java | 2 +- .../jfaster/mango/descriptor/MethodDescriptor.java | 8 +++++++- .../org/jfaster/mango/plugin/stats/ExtendStat.java | 4 +++- .../mango/exception/IncorrectSqlExceptionTest.java | 13 ++++++++++++- .../java/org/jfaster/mango/support/MockSQL.java | 10 +++++++--- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jfaster/mango/annotation/SQL.java b/src/main/java/org/jfaster/mango/annotation/SQL.java index a58a218e..6423b1a5 100644 --- a/src/main/java/org/jfaster/mango/annotation/SQL.java +++ b/src/main/java/org/jfaster/mango/annotation/SQL.java @@ -33,6 +33,6 @@ * * @return */ - String value(); + String[] value(); } diff --git a/src/main/java/org/jfaster/mango/descriptor/MethodDescriptor.java b/src/main/java/org/jfaster/mango/descriptor/MethodDescriptor.java index d6387740..168945fc 100644 --- a/src/main/java/org/jfaster/mango/descriptor/MethodDescriptor.java +++ b/src/main/java/org/jfaster/mango/descriptor/MethodDescriptor.java @@ -18,6 +18,7 @@ import org.jfaster.mango.annotation.*; import org.jfaster.mango.exception.DescriptionException; +import org.jfaster.mango.util.Joiner; import org.jfaster.mango.util.Strings; import org.jfaster.mango.util.logging.InternalLogger; import org.jfaster.mango.util.logging.InternalLoggerFactory; @@ -26,6 +27,7 @@ import javax.annotation.Nullable; import java.lang.annotation.Annotation; import java.lang.reflect.Type; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -99,7 +101,11 @@ public String getSQL() { SQL sqlAnno = getAnnotation(SQL.class); String sql; if (sqlAnno != null) { - sql = sqlAnno.value(); + String[] fragments = sqlAnno.value(); + if (fragments.length == 0) { + throw new DescriptionException("sql is null or empty"); + } + sql = Joiner.on(' ').join(Arrays.asList(fragments)).trim(); } else { UseSqlGenerator useSqlGeneratorAnno = getAnnotation(UseSqlGenerator.class); if (useSqlGeneratorAnno == null) { diff --git a/src/main/java/org/jfaster/mango/plugin/stats/ExtendStat.java b/src/main/java/org/jfaster/mango/plugin/stats/ExtendStat.java index 146b5fb5..5e7ff7ad 100644 --- a/src/main/java/org/jfaster/mango/plugin/stats/ExtendStat.java +++ b/src/main/java/org/jfaster/mango/plugin/stats/ExtendStat.java @@ -21,12 +21,14 @@ import org.jfaster.mango.annotation.Sharding; import org.jfaster.mango.sharding.NotUseTableShardingStrategy; import org.jfaster.mango.stat.OperatorStat; +import org.jfaster.mango.util.Joiner; import org.jfaster.mango.util.Strings; import org.jfaster.mango.util.ToStringHelper; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -52,7 +54,7 @@ public String getSimpleMethodName() { } public String getSql() { - String sql = method.getAnnotation(SQL.class).value(); + String sql = Joiner.on(' ').join(Arrays.asList(method.getAnnotation(SQL.class).value())); DB dbAnno = method.getDeclaringClass().getAnnotation(DB.class); String table = dbAnno.table(); if (Strings.isNotEmpty(table)) { diff --git a/src/test/java/org/jfaster/mango/exception/IncorrectSqlExceptionTest.java b/src/test/java/org/jfaster/mango/exception/IncorrectSqlExceptionTest.java index 32fd1262..9b4376c9 100644 --- a/src/test/java/org/jfaster/mango/exception/IncorrectSqlExceptionTest.java +++ b/src/test/java/org/jfaster/mango/exception/IncorrectSqlExceptionTest.java @@ -33,7 +33,8 @@ import java.util.List; /** - * 测试{@link org.jfaster.mango.operator.IncorrectSqlException} + * 测试{@link org.jfaster.mango.exception.DescriptionException} + * 测试{@link org.jfaster.mango.parser.SqlParserException} * * @author ash */ @@ -81,6 +82,13 @@ public void test5() { dao.gets(new ArrayList(), new ArrayList()); } + @Test + public void test6() { + thrown.expect(DescriptionException.class); + Dao dao = mango.create(Dao.class); + dao.add4(); + } + @DB @Cache(prefix = "dao_", expire = Day.class) static interface Dao { @@ -93,6 +101,9 @@ static interface Dao { @SQL("test") public int add3(); + @SQL({}) + public int add4(); + @SQL("select ... where a in (:1) and b in (:2)") public List gets(@CacheBy List a, List b); } diff --git a/src/test/java/org/jfaster/mango/support/MockSQL.java b/src/test/java/org/jfaster/mango/support/MockSQL.java index 79658994..2702602e 100644 --- a/src/test/java/org/jfaster/mango/support/MockSQL.java +++ b/src/test/java/org/jfaster/mango/support/MockSQL.java @@ -25,14 +25,18 @@ */ public class MockSQL implements Annotation, SQL { - private String value; + private String[] value; - public MockSQL(String value) { + public MockSQL(String[] value) { this.value = value; } + public MockSQL(String value) { + this.value = new String[]{value}; + } + @Override - public String value() { + public String[] value() { return value; } From ff1a792c607c318590ec447591691a91cedf8875 Mon Sep 17 00:00:00 2001 From: Tony Wang Date: Mon, 5 Jun 2017 23:43:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4078fa60 --- /dev/null +++ b/.gitignore @@ -0,0 +1,138 @@ +# Created by .ignore support plugin (hsz.mobi) +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties +### Java template +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +### Maven template +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + +# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) +!/.mvn/wrapper/maven-wrapper.jar +### Eclipse template + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# Eclipse Core +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet