|
@@ -15,50 +15,12 @@
|
|
|
*/
|
|
|
package com.baomidou.mybatisplus.core;
|
|
|
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.InputStream;
|
|
|
-import java.lang.annotation.Annotation;
|
|
|
-import java.lang.reflect.Array;
|
|
|
-import java.lang.reflect.GenericArrayType;
|
|
|
-import java.lang.reflect.Method;
|
|
|
-import java.lang.reflect.ParameterizedType;
|
|
|
-import java.lang.reflect.Type;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collection;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Locale;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Optional;
|
|
|
-import java.util.Properties;
|
|
|
-import java.util.Set;
|
|
|
-
|
|
|
-import org.apache.ibatis.annotations.Arg;
|
|
|
-import org.apache.ibatis.annotations.CacheNamespace;
|
|
|
-import org.apache.ibatis.annotations.CacheNamespaceRef;
|
|
|
-import org.apache.ibatis.annotations.Case;
|
|
|
-import org.apache.ibatis.annotations.ConstructorArgs;
|
|
|
-import org.apache.ibatis.annotations.Delete;
|
|
|
-import org.apache.ibatis.annotations.DeleteProvider;
|
|
|
-import org.apache.ibatis.annotations.Insert;
|
|
|
-import org.apache.ibatis.annotations.InsertProvider;
|
|
|
-import org.apache.ibatis.annotations.Lang;
|
|
|
-import org.apache.ibatis.annotations.MapKey;
|
|
|
-import org.apache.ibatis.annotations.Options;
|
|
|
-import org.apache.ibatis.annotations.Options.FlushCachePolicy;
|
|
|
-import org.apache.ibatis.annotations.Property;
|
|
|
-import org.apache.ibatis.annotations.Result;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
|
|
|
+import org.apache.ibatis.annotations.*;
|
|
|
import org.apache.ibatis.annotations.ResultMap;
|
|
|
-import org.apache.ibatis.annotations.ResultType;
|
|
|
-import org.apache.ibatis.annotations.Results;
|
|
|
-import org.apache.ibatis.annotations.Select;
|
|
|
-import org.apache.ibatis.annotations.SelectKey;
|
|
|
-import org.apache.ibatis.annotations.SelectProvider;
|
|
|
-import org.apache.ibatis.annotations.TypeDiscriminator;
|
|
|
-import org.apache.ibatis.annotations.Update;
|
|
|
-import org.apache.ibatis.annotations.UpdateProvider;
|
|
|
+import org.apache.ibatis.annotations.Options.FlushCachePolicy;
|
|
|
import org.apache.ibatis.binding.BindingException;
|
|
|
import org.apache.ibatis.binding.MapperMethod;
|
|
|
import org.apache.ibatis.builder.BuilderException;
|
|
@@ -75,27 +37,21 @@ import org.apache.ibatis.executor.keygen.KeyGenerator;
|
|
|
import org.apache.ibatis.executor.keygen.NoKeyGenerator;
|
|
|
import org.apache.ibatis.executor.keygen.SelectKeyGenerator;
|
|
|
import org.apache.ibatis.io.Resources;
|
|
|
-import org.apache.ibatis.mapping.Discriminator;
|
|
|
-import org.apache.ibatis.mapping.FetchType;
|
|
|
-import org.apache.ibatis.mapping.MappedStatement;
|
|
|
-import org.apache.ibatis.mapping.ResultFlag;
|
|
|
-import org.apache.ibatis.mapping.ResultMapping;
|
|
|
-import org.apache.ibatis.mapping.ResultSetType;
|
|
|
-import org.apache.ibatis.mapping.SqlCommandType;
|
|
|
-import org.apache.ibatis.mapping.SqlSource;
|
|
|
-import org.apache.ibatis.mapping.StatementType;
|
|
|
+import org.apache.ibatis.mapping.*;
|
|
|
import org.apache.ibatis.parsing.PropertyParser;
|
|
|
import org.apache.ibatis.reflection.TypeParameterResolver;
|
|
|
import org.apache.ibatis.scripting.LanguageDriver;
|
|
|
-import org.apache.ibatis.session.Configuration;
|
|
|
import org.apache.ibatis.session.ResultHandler;
|
|
|
import org.apache.ibatis.session.RowBounds;
|
|
|
import org.apache.ibatis.type.JdbcType;
|
|
|
import org.apache.ibatis.type.TypeHandler;
|
|
|
import org.apache.ibatis.type.UnknownTypeHandler;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.lang.annotation.Annotation;
|
|
|
+import java.lang.reflect.*;
|
|
|
+import java.util.*;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -125,11 +81,11 @@ public class MybatisMapperAnnotationBuilder extends MapperAnnotationBuilder {
|
|
|
SQL_PROVIDER_ANNOTATION_TYPES.add(DeleteProvider.class);
|
|
|
}
|
|
|
|
|
|
- private final Configuration configuration;
|
|
|
+ private final MybatisConfiguration configuration;
|
|
|
private final MapperBuilderAssistant assistant;
|
|
|
private final Class<?> type;
|
|
|
|
|
|
- public MybatisMapperAnnotationBuilder(Configuration configuration, Class<?> type) {
|
|
|
+ public MybatisMapperAnnotationBuilder(MybatisConfiguration configuration, Class<?> type) {
|
|
|
super(configuration, type);
|
|
|
String resource = type.getName().replace('.', '/') + ".java (best guess)";
|
|
|
this.assistant = new MapperBuilderAssistant(configuration, resource);
|
|
@@ -143,23 +99,25 @@ public class MybatisMapperAnnotationBuilder extends MapperAnnotationBuilder {
|
|
|
if (!configuration.isResourceLoaded(resource)) {
|
|
|
loadXmlResource();
|
|
|
configuration.addLoadedResource(resource);
|
|
|
- assistant.setCurrentNamespace(type.getName());
|
|
|
+ final String typeName = type.getName();
|
|
|
+ assistant.setCurrentNamespace(typeName);
|
|
|
parseCache();
|
|
|
parseCacheRef();
|
|
|
- // TODO 注入 CURD 动态 SQL (应该在注解之前注入)
|
|
|
- GlobalConfigUtils.getSqlInjector(configuration).inspectInject(assistant, type);
|
|
|
Method[] methods = type.getMethods();
|
|
|
for (Method method : methods) {
|
|
|
try {
|
|
|
// issue #237
|
|
|
if (!method.isBridge()) {
|
|
|
parseStatement(method);
|
|
|
+ SqlParserHelper.initSqlParserInfoCache(typeName, method);
|
|
|
}
|
|
|
} catch (IncompleteElementException e) {
|
|
|
// TODO 使用 MybatisMethodResolver 而不是 MethodResolver
|
|
|
configuration.addIncompleteMethod(new MybatisMethodResolver(this, method));
|
|
|
}
|
|
|
}
|
|
|
+ // TODO 注入 CURD 动态 SQL , 放在在最后, because 可能会有人会用注解重写sql
|
|
|
+ GlobalConfigUtils.getSqlInjector(configuration).inspectInject(assistant, type);
|
|
|
}
|
|
|
parsePendingMethods();
|
|
|
}
|