Browse Source

3.0 分包 init

yuxiaobin 7 years ago
parent
commit
39cc2ac293
100 changed files with 667 additions and 1220 deletions
  1. 24 27
      build.gradle
  2. 7 0
      mybatis-plus-annotations/build.gradle
  3. 1 1
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/FieldFill.java
  4. 1 1
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/FieldStrategy.java
  5. 1 1
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/IdType.java
  6. 0 0
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/KeySequence.java
  7. 1 1
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/SqlCondition.java
  8. 0 0
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/SqlParser.java
  9. 0 3
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableField.java
  10. 0 2
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableId.java
  11. 0 0
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableLogic.java
  12. 0 0
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableName.java
  13. 0 0
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/Version.java
  14. 0 0
      mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/package-info.java
  15. 0 6
      mybatis-plus-boot-starter/build.gradle
  16. 0 20
      mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/ConfigurationCustomizer.java
  17. 0 223
      mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/GlobalConfig.java
  18. 0 262
      mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/MybatisPlusAutoConfiguration.java
  19. 0 186
      mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/MybatisPlusProperties.java
  20. 0 48
      mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/SpringBootVFS.java
  21. 0 4
      mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/package-info.java
  22. 0 120
      mybatis-plus-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  23. 0 1
      mybatis-plus-boot-starter/src/main/resources/META-INF/spring-devtools.properties
  24. 0 3
      mybatis-plus-boot-starter/src/main/resources/META-INF/spring.factories
  25. 18 15
      mybatis-plus-core/build.gradle
  26. 2 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java
  27. 12 11
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisDefaultParameterHandler.java
  28. 5 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisMapperAnnotationBuilder.java
  29. 3 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisMapperRegistry.java
  30. 4 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisSessionFactoryBuilder.java
  31. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisXMLConfigBuilder.java
  32. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisXMLLanguageDriver.java
  33. 2 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/ISqlParser.java
  34. 47 0
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/ISqlRunner.java
  35. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/SqlInfo.java
  36. 3 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/EntityWrapper.java
  37. 3 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/MybatisAbstractSQL.java
  38. 2 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/SqlPlus.java
  39. 29 11
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/Wrapper.java
  40. 15 0
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/IDBType.java
  41. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/IEnum.java
  42. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlLike.java
  43. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlMethod.java
  44. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/exceptions/MybatisPlusException.java
  45. 14 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/MetaObjectHandler.java
  46. 163 0
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/SqlReservedWordsHandler.java
  47. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/incrementer/IKeyGenerator.java
  48. 45 39
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AutoSqlInjector.java
  49. 2 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/ISqlInjector.java
  50. 3 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/mapper/BaseMapper.java
  51. 6 6
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/Column.java
  52. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/Columns.java
  53. 44 26
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/GlobalConfiguration.java
  54. 7 7
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableFieldInfo.java
  55. 3 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfo.java
  56. 9 0
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/package-info.java
  57. 1 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/Page.java
  58. 3 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/PageHelper.java
  59. 4 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/Pagination.java
  60. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/dialect/IDialect.java
  61. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ArrayUtils.java
  62. 3 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ClassUtils.java
  63. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/CollectionUtils.java
  64. 2 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/EnumUtils.java
  65. 13 12
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/GlobalConfigUtils.java
  66. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IOUtils.java
  67. 2 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IdWorker.java
  68. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/MapUtils.java
  69. 14 18
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/PluginUtils.java
  70. 3 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ReflectionKit.java
  71. 2 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/Sequence.java
  72. 6 5
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/StringUtils.java
  73. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/SystemClock.java
  74. 10 10
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableInfoHelper.java
  75. 3 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlFormatter.java
  76. 12 10
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlHelper.java
  77. 9 6
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlUtils.java
  78. 1 1
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/StringEscape.java
  79. 0 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/package-info.java
  80. 0 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/package-info.java
  81. 0 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/pagination/optimize/package-info.java
  82. 0 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/parser/package-info.java
  83. 0 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/parser/tenant/package-info.java
  84. 0 4
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/spring/package-info.java
  85. 9 0
      mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/package-info.java
  86. 12 0
      mybatis-plus-extension/build.gradle
  87. 2 2
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/MybatisMapWrapperFactory.java
  88. 3 3
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/MybatisSqlSessionTemplate.java
  89. 13 15
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/activerecord/Model.java
  90. 3 2
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/enums/DBType.java
  91. 3 3
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/BlobTypeHandler.java
  92. 3 3
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/EnumTypeHandler.java
  93. 2 2
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/MybatisMapWrapper.java
  94. 8 7
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/SqlParserHandler.java
  95. 3 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/DB2KeyGenerator.java
  96. 3 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/H2KeyGenerator.java
  97. 3 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/OracleKeyGenerator.java
  98. 3 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/PostgreKeyGenerator.java
  99. 9 7
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/LogicSqlInjector.java
  100. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/package-info.java

+ 24 - 27
build.gradle

@@ -14,42 +14,39 @@ ext {
 			"jsqlparser": "com.github.jsqlparser:jsqlparser:1.1",
 			"mybatis-spring": "org.mybatis:mybatis-spring:${mybatisSpringVersion}",
 			"mybatis": "org.mybatis:mybatis:${mybatisVersion}",
-			"velocity":"org.apache.velocity:velocity-engine-core:2.0",
-			"slf4j-api":"org.slf4j:slf4j-api:1.7.25",
-			"junit":"junit:junit:4.12",
-            "mockito":"org.mockito:mockito-core:2.13.0",
-			"commons-dbcp2":"org.apache.commons:commons-dbcp2:2.1.1",
-			"mybatis-ehcache":"org.mybatis.caches:mybatis-ehcache:1.1.0",
-			"logback-classic":"ch.qos.logback:logback-classic:1.2.2",
-			"sqlserver":"com.microsoft.sqlserver:sqljdbc4:4.0",
-			"postgresql":"org.postgresql:postgresql:9.4.1212",
-			"oracle":"com.oracle:ojdbc14:10.2.0.5.0",
-			"h2":"com.h2database:h2:1.4.194",
-			"mysql":"mysql:mysql-connector-java:5.1.38",
-			"aspectjweaver":"org.aspectj:aspectjweaver:1.8.9",
-			"servlet-api":"javax.servlet:servlet-api:2.5",
-			"lombok":"org.projectlombok:lombok:1.16.16",
-			"hikaricp":"com.zaxxer:HikariCP:2.7.0",
-			"spring-test":"org.springframework:spring-test:${springVersion}",
-			"spring-webmvc":"org.springframework:spring-webmvc:${springVersion}",
 			"spring-context-support":"org.springframework:spring-context-support:${springVersion}",
-			"spring-jdbc":"org.springframework:spring-jdbc:${springVersion}",
-			"spring-tx":"org.springframework:spring-tx:${springVersion}",
-			"druid":"com.alibaba:druid:1.0.29",
+            "spring-jdbc":"org.springframework:spring-jdbc:${springVersion}",
+            "spring-tx":"org.springframework:spring-tx:${springVersion}",
+
+            "aspectjweaver":"org.aspectj:aspectjweaver:1.8.9",
+            "mockito":"org.mockito:mockito-core:2.13.0",
+            "mybatis-ehcache":"org.mybatis.caches:mybatis-ehcache:1.1.0",
+            "slf4j-api":"org.slf4j:slf4j-api:1.7.25",
+            "logback-classic":"ch.qos.logback:logback-classic:1.2.2",
+            //test
+            "spring-test":"org.springframework:spring-test:${springVersion}",
+            "junit":"junit:junit:4.12",
+            "lombok":"org.projectlombok:lombok:1.16.16",
 			"fastjson":"com.alibaba:fastjson:1.2.37",
 			"tomcatjdbc":"org.apache.tomcat:tomcat-jdbc:9.0.2",
+            //datasource
+            "hikaricp":"com.zaxxer:HikariCP:2.7.0",
+            "druid":"com.alibaba:druid:1.0.29",
+            "commons-dbcp2":"org.apache.commons:commons-dbcp2:2.1.1",
+            "sqlserver":"com.microsoft.sqlserver:sqljdbc4:4.0",
+            "postgresql":"org.postgresql:postgresql:9.4.1212",
+            "oracle":"com.oracle:ojdbc14:10.2.0.5.0",
+            "h2":"com.h2database:h2:1.4.194",
+            "mysql":"mysql:mysql-connector-java:5.1.38",
+            //code generator
+            "velocity":"org.apache.velocity:velocity-engine-core:2.0",
 			"freemarker":"org.freemarker:freemarker:2.3.9",
-
-            // spring boot
-            "springboot-autoconfigure":"org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}",
-            "springboot-configuration-processor":"org.springframework.boot:spring-boot-configuration-processor:${springBootVersion}",
-            "springboot-starter-jdbc":"org.springframework.boot:spring-boot-starter-jdbc:${springBootVersion}",
 	]
 }
 
 allprojects{
 	group = 'com.baomidou'
-	version = '2.1.9'
+	version = '3.0.1-SNAPSHOT'
 }
 
 

+ 7 - 0
mybatis-plus-annotations/build.gradle

@@ -0,0 +1,7 @@
+apply plugin: 'java'
+
+sourceCompatibility = 1.7
+
+dependencies {
+    testCompile group: 'junit', name: 'junit', version: '4.12'
+}

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/FieldFill.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/FieldFill.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.annotations;
 
 /**
  * <p>

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/FieldStrategy.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/FieldStrategy.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.annotations;
 
 /**
  * <p>

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/IdType.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/IdType.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.annotations;
 
 /**
  * <p>

+ 0 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/KeySequence.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/KeySequence.java


+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/SqlCondition.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/SqlCondition.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.annotations;
 
 /**
  * <p>

+ 0 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/SqlParser.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/SqlParser.java


+ 0 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/TableField.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableField.java

@@ -21,9 +21,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import com.baomidou.mybatisplus.enums.FieldFill;
-import com.baomidou.mybatisplus.enums.FieldStrategy;
-import com.baomidou.mybatisplus.mapper.SqlCondition;
 
 /**
  * <p>

+ 0 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/TableId.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableId.java

@@ -21,8 +21,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import com.baomidou.mybatisplus.enums.IdType;
-
 /**
  * <p>
  * 表主键标识

+ 0 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/TableLogic.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableLogic.java


+ 0 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/TableName.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/TableName.java


+ 0 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/Version.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/Version.java


+ 0 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/annotations/package-info.java → mybatis-plus-annotations/src/main/java/com/baomidou/mybatisplus/annotations/package-info.java


+ 0 - 6
mybatis-plus-boot-starter/build.gradle

@@ -1,6 +0,0 @@
-dependencies {
-    compile project(":mybatis-plus")
-    compile rootProject.ext.dependencies["springboot-autoconfigure"]
-    compile rootProject.ext.dependencies["springboot-starter-jdbc"]
-    optional rootProject.ext.dependencies["springboot-configuration-processor"]
-}

+ 0 - 20
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/ConfigurationCustomizer.java

@@ -1,20 +0,0 @@
-package com.baomidou.mybatisplus.spring.boot.starter;
-
-import org.apache.ibatis.session.Configuration;
-
-/**
- * Callback interface that can be customized a {@link Configuration} object generated on auto-configuration.
- *
- * @author Kazuki Shimizu
- * @since 1.2.1
- */
-public interface ConfigurationCustomizer {
-
-    /**
-     * Customize the given a {@link Configuration} object.
-     *
-     * @param configuration the configuration object to customize
-     */
-    void customize(Configuration configuration);
-
-}

+ 0 - 223
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/GlobalConfig.java

@@ -1,223 +0,0 @@
-/**
- * Copyright (c) 2011-2014, hubin (jobob@qq.com).
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.baomidou.mybatisplus.spring.boot.starter;
-
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
-import com.baomidou.mybatisplus.mapper.ISqlInjector;
-import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
-
-/**
- * <p>
- * Mybatis全局缓存
- * </p>
- *
- * @author Caratacus
- * @since 2017-05-01
- */
-public class GlobalConfig {
-
-    /**
-     * 主键类型
-     */
-    private Integer idType;
-    /**
-     * 表名、字段名、是否使用下划线命名
-     */
-    private Boolean dbColumnUnderline;
-    /**
-     * SQL注入器
-     */
-    @Deprecated
-    private String sqlInjector;
-    /**
-     * 元对象字段填充控制器
-     */
-    @Deprecated
-    private String metaObjectHandler;
-    /**
-     * 字段验证策略
-     */
-    private Integer fieldStrategy;
-    /**
-     * 方便调试
-     */
-    private Boolean refreshMapper;
-    /**
-     * 是否大写命名
-     */
-    private Boolean isCapitalMode;
-    /**
-     * 标识符
-     */
-    private String identifierQuote;
-    /**
-     * 逻辑删除全局值
-     */
-    private String logicDeleteValue = null;
-    /**
-     * 逻辑未删除全局值
-     */
-    private String logicNotDeleteValue = null;
-    /**
-     * 表关键词 key 生成器
-     */
-    @Deprecated
-    private String keyGenerator;
-    /**
-     * 缓存 Sql 解析初始化
-     */
-    private Boolean sqlParserCache;
-
-    public Integer getIdType() {
-        return idType;
-    }
-
-    public void setIdType(Integer idType) {
-        this.idType = idType;
-    }
-
-    public Boolean getDbColumnUnderline() {
-        return dbColumnUnderline;
-    }
-
-    public void setDbColumnUnderline(Boolean dbColumnUnderline) {
-        this.dbColumnUnderline = dbColumnUnderline;
-    }
-
-    public String getSqlInjector() {
-        return sqlInjector;
-    }
-
-    public void setSqlInjector(String sqlInjector) {
-        this.sqlInjector = sqlInjector;
-    }
-
-    public String getMetaObjectHandler() {
-        return metaObjectHandler;
-    }
-
-    public void setMetaObjectHandler(String metaObjectHandler) {
-        this.metaObjectHandler = metaObjectHandler;
-    }
-
-    public Integer getFieldStrategy() {
-        return fieldStrategy;
-    }
-
-    public void setFieldStrategy(Integer fieldStrategy) {
-        this.fieldStrategy = fieldStrategy;
-    }
-
-    public Boolean getCapitalMode() {
-        return isCapitalMode;
-    }
-
-    public void setCapitalMode(Boolean capitalMode) {
-        isCapitalMode = capitalMode;
-    }
-
-    public String getIdentifierQuote() {
-        return identifierQuote;
-    }
-
-    public void setIdentifierQuote(String identifierQuote) {
-        this.identifierQuote = identifierQuote;
-    }
-
-    public Boolean getRefreshMapper() {
-        return refreshMapper;
-    }
-
-    public void setRefreshMapper(Boolean refreshMapper) {
-        this.refreshMapper = refreshMapper;
-    }
-
-    public String getLogicDeleteValue() {
-        return logicDeleteValue;
-    }
-
-    public void setLogicDeleteValue(String logicDeleteValue) {
-        this.logicDeleteValue = logicDeleteValue;
-    }
-
-    public String getLogicNotDeleteValue() {
-        return logicNotDeleteValue;
-    }
-
-    public void setLogicNotDeleteValue(String logicNotDeleteValue) {
-        this.logicNotDeleteValue = logicNotDeleteValue;
-    }
-
-    public String getKeyGenerator() {
-        return keyGenerator;
-    }
-
-    public void setKeyGenerator(String keyGenerator) {
-        this.keyGenerator = keyGenerator;
-    }
-
-    public Boolean getSqlParserCache() {
-        return sqlParserCache;
-    }
-
-    public void setSqlParserCache(Boolean sqlParserCache) {
-        this.sqlParserCache = sqlParserCache;
-    }
-
-    public GlobalConfiguration convertGlobalConfiguration() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
-        GlobalConfiguration globalConfiguration = new GlobalConfiguration();
-        if (StringUtils.isNotEmpty(this.getIdentifierQuote())) {
-            globalConfiguration.setIdentifierQuote(this.getIdentifierQuote());
-        }
-        if (StringUtils.isNotEmpty(this.getLogicDeleteValue())) {
-            globalConfiguration.setLogicDeleteValue(this.getLogicDeleteValue());
-        }
-        if (StringUtils.isNotEmpty(this.getLogicNotDeleteValue())) {
-            globalConfiguration.setLogicNotDeleteValue(this.getLogicNotDeleteValue());
-        }
-        if (StringUtils.isNotEmpty(this.getSqlInjector())) {
-            globalConfiguration.setSqlInjector((ISqlInjector) Class.forName(this.getSqlInjector()).newInstance());
-        }
-        if (StringUtils.isNotEmpty(this.getMetaObjectHandler())) {
-            globalConfiguration.setMetaObjectHandler((MetaObjectHandler) Class.forName(this.getMetaObjectHandler()).newInstance());
-        }
-        if (StringUtils.isNotEmpty(this.getKeyGenerator())) {
-            globalConfiguration.setKeyGenerator((IKeyGenerator) Class.forName(this.getKeyGenerator()).newInstance());
-        }
-        if (StringUtils.checkValNotNull(this.getIdType())) {
-            globalConfiguration.setIdType(this.getIdType());
-        }
-        if (null != this.getDbColumnUnderline()) {
-            globalConfiguration.setDbColumnUnderline(this.getDbColumnUnderline());
-        }
-        if (StringUtils.checkValNotNull(this.getFieldStrategy())) {
-            globalConfiguration.setFieldStrategy(this.getFieldStrategy());
-        }
-        if (StringUtils.checkValNotNull(this.getRefreshMapper())) {
-            globalConfiguration.setRefresh(this.getRefreshMapper());
-        }
-        if (StringUtils.checkValNotNull(this.getCapitalMode())) {
-            globalConfiguration.setCapitalMode(this.getCapitalMode());
-        }
-        if (null != this.getSqlParserCache()) {
-            globalConfiguration.setSqlParserCache(this.getSqlParserCache());
-        }
-        return globalConfiguration;
-    }
-
-}

+ 0 - 262
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/MybatisPlusAutoConfiguration.java

@@ -1,262 +0,0 @@
-package com.baomidou.mybatisplus.spring.boot.starter;
-
-import java.util.List;
-
-import javax.annotation.PostConstruct;
-import javax.sql.DataSource;
-
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
-import com.baomidou.mybatisplus.mapper.ISqlInjector;
-import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-import org.apache.ibatis.mapping.DatabaseIdProvider;
-import org.apache.ibatis.plugin.Interceptor;
-import org.apache.ibatis.session.ExecutorType;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.mybatis.spring.mapper.ClassPathMapperScanner;
-import org.mybatis.spring.mapper.MapperFactoryBean;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.ObjectProvider;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ResourceLoaderAware;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.core.type.AnnotationMetadata;
-import org.springframework.util.Assert;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
-
-import com.baomidou.mybatisplus.MybatisConfiguration;
-import com.baomidou.mybatisplus.MybatisXMLLanguageDriver;
-import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
-
-/**
- * {@link EnableAutoConfiguration Auto-Configuration} for Mybatis. Contributes a
- * {@link SqlSessionFactory} and a {@link SqlSessionTemplate}.
- * <p>
- * If {@link org.mybatis.spring.annotation.MapperScan} is used, or a
- * configuration file is specified as a property, those will be considered,
- * otherwise this auto-configuration will attempt to register mappers based on
- * the interface definitions in or under the root auto-configuration package.
- *
- * @author Eddú Meléndez
- * @author Josh Long
- * @author Kazuki Shimizu
- * @author Eduardo Macarrón
- */
-@SuppressWarnings("ConstantConditions")
-@org.springframework.context.annotation.Configuration
-@ConditionalOnClass({SqlSessionFactory.class, MybatisSqlSessionFactoryBean.class})
-@ConditionalOnBean(DataSource.class)
-@EnableConfigurationProperties(MybatisPlusProperties.class)
-@AutoConfigureAfter(DataSourceAutoConfiguration.class)
-public class MybatisPlusAutoConfiguration {
-
-    private static final Log logger = LogFactory.getLog(MybatisPlusAutoConfiguration.class);
-
-    private final MybatisPlusProperties properties;
-
-    private final Interceptor[] interceptors;
-
-    private final ResourceLoader resourceLoader;
-
-    private final DatabaseIdProvider databaseIdProvider;
-
-    private final List<ConfigurationCustomizer> configurationCustomizers;
-
-    private final ApplicationContext applicationContext;
-
-    public MybatisPlusAutoConfiguration(MybatisPlusProperties properties,
-                                        ObjectProvider<Interceptor[]> interceptorsProvider,
-                                        ResourceLoader resourceLoader,
-                                        ObjectProvider<DatabaseIdProvider> databaseIdProvider,
-                                        ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider,ApplicationContext applicationContext) {
-        this.properties = properties;
-        this.interceptors = interceptorsProvider.getIfAvailable();
-        this.resourceLoader = resourceLoader;
-        this.databaseIdProvider = databaseIdProvider.getIfAvailable();
-        this.configurationCustomizers = configurationCustomizersProvider.getIfAvailable();
-        this.applicationContext = applicationContext;
-    }
-
-    @PostConstruct
-    public void checkConfigFileExists() {
-        if (this.properties.isCheckConfigLocation() && StringUtils.hasText(this.properties.getConfigLocation())) {
-            Resource resource = this.resourceLoader.getResource(this.properties.getConfigLocation());
-            Assert.state(resource.exists(), "Cannot find config location: " + resource
-                + " (please add config file or check your Mybatis configuration)");
-        }
-    }
-
-    @Bean
-    @ConditionalOnMissingBean
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
-        MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
-        factory.setDataSource(dataSource);
-        factory.setVfs(SpringBootVFS.class);
-        if (StringUtils.hasText(this.properties.getConfigLocation())) {
-            factory.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
-        }
-        MybatisConfiguration configuration = this.properties.getConfiguration();
-        if (configuration == null && !StringUtils.hasText(this.properties.getConfigLocation())) {
-            configuration = new MybatisConfiguration();
-        }
-        if (configuration != null && !CollectionUtils.isEmpty(this.configurationCustomizers)) {
-            for (ConfigurationCustomizer customizer : this.configurationCustomizers) {
-                customizer.customize(configuration);
-            }
-        }
-        configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
-        factory.setConfiguration(configuration);
-        if (this.properties.getConfigurationProperties() != null) {
-            factory.setConfigurationProperties(this.properties.getConfigurationProperties());
-        }
-        if (!ObjectUtils.isEmpty(this.interceptors)) {
-            factory.setPlugins(this.interceptors);
-        }
-        if (this.databaseIdProvider != null) {
-            factory.setDatabaseIdProvider(this.databaseIdProvider);
-        }
-        if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {
-            factory.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
-        }
-        // TODO 自定义枚举包
-        if (StringUtils.hasLength(this.properties.getTypeEnumsPackage())) {
-            factory.setTypeEnumsPackage(this.properties.getTypeEnumsPackage());
-        }
-        if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {
-            factory.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());
-        }
-        if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {
-            factory.setMapperLocations(this.properties.resolveMapperLocations());
-        }
-        GlobalConfiguration globalConfig;
-        if (!ObjectUtils.isEmpty(this.properties.getGlobalConfig())) {
-            globalConfig = this.properties.getGlobalConfig().convertGlobalConfiguration();
-        }else {
-            globalConfig = new GlobalConfiguration();
-        }
-        //注入填充器
-        if (this.applicationContext.getBeanNamesForType(MetaObjectHandler.class, false,
-            false).length > 0) {
-            MetaObjectHandler metaObjectHandler = this.applicationContext.getBean(MetaObjectHandler.class);
-            globalConfig.setMetaObjectHandler(metaObjectHandler);
-        }
-        //注入主键生成器
-        if(this.applicationContext.getBeanNamesForType(IKeyGenerator.class,false,
-            false).length >0){
-            IKeyGenerator keyGenerator = this.applicationContext.getBean(IKeyGenerator.class);
-            globalConfig.setKeyGenerator(keyGenerator);
-        }
-        //注入sql注入器
-        if(this.applicationContext.getBeanNamesForType(ISqlInjector.class,false,
-            false).length >0){
-            ISqlInjector iSqlInjector = this.applicationContext.getBean(ISqlInjector.class);
-            globalConfig.setSqlInjector(iSqlInjector);
-        }
-        factory.setGlobalConfig(globalConfig);
-        return factory.getObject();
-    }
-
-    @Bean
-    @ConditionalOnMissingBean
-    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
-        ExecutorType executorType = this.properties.getExecutorType();
-        if (executorType != null) {
-            return new SqlSessionTemplate(sqlSessionFactory, executorType);
-        } else {
-            return new SqlSessionTemplate(sqlSessionFactory);
-        }
-    }
-
-    /**
-     * This will just scan the same base package as Spring Boot does. If you want
-     * more power, you can explicitly use
-     * {@link org.mybatis.spring.annotation.MapperScan} but this will get typed
-     * mappers working correctly, out-of-the-box, similar to using Spring Data JPA
-     * repositories.
-     */
-    public static class AutoConfiguredMapperScannerRegistrar
-        implements BeanFactoryAware, ImportBeanDefinitionRegistrar, ResourceLoaderAware {
-
-        private BeanFactory beanFactory;
-
-        private ResourceLoader resourceLoader;
-
-        @Override
-        public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
-
-            logger.debug("Searching for mappers annotated with @Mapper");
-
-            ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
-
-            try {
-                if (this.resourceLoader != null) {
-                    scanner.setResourceLoader(this.resourceLoader);
-                }
-
-                List<String> packages = AutoConfigurationPackages.get(this.beanFactory);
-                if (logger.isDebugEnabled()) {
-                    for (String pkg : packages) {
-                        logger.debug("Using auto-configuration base package '" + pkg + "'");
-                    }
-                }
-
-                scanner.setAnnotationClass(Mapper.class);
-                scanner.registerFilters();
-                scanner.doScan(StringUtils.toStringArray(packages));
-            } catch (IllegalStateException ex) {
-                logger.debug("Could not determine auto-configuration package, automatic mapper scanning disabled." + ex);
-            }
-        }
-
-        @Override
-        public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
-            this.beanFactory = beanFactory;
-        }
-
-        @Override
-        public void setResourceLoader(ResourceLoader resourceLoader) {
-            this.resourceLoader = resourceLoader;
-        }
-    }
-
-    /**
-     * {@link org.mybatis.spring.annotation.MapperScan} ultimately ends up
-     * creating instances of {@link MapperFactoryBean}. If
-     * {@link org.mybatis.spring.annotation.MapperScan} is used then this
-     * auto-configuration is not needed. If it is _not_ used, however, then this
-     * will bring in a bean registrar and automatically register components based
-     * on the same component-scanning path as Spring Boot itself.
-     */
-    @org.springframework.context.annotation.Configuration
-    @Import({AutoConfiguredMapperScannerRegistrar.class})
-    @ConditionalOnMissingBean(MapperFactoryBean.class)
-    public static class MapperScannerRegistrarNotFoundConfiguration {
-
-        @PostConstruct
-        public void afterPropertiesSet() {
-            logger.debug("No " + MapperFactoryBean.class.getName() + " found.");
-        }
-    }
-
-}

+ 0 - 186
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/MybatisPlusProperties.java

@@ -1,186 +0,0 @@
-package com.baomidou.mybatisplus.spring.boot.starter;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.ibatis.session.ExecutorType;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.NestedConfigurationProperty;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-
-import com.baomidou.mybatisplus.MybatisConfiguration;
-
-/**
- * Configuration properties for MyBatis.
- *
- * @author Eddú Meléndez
- * @author Kazuki Shimizu
- */
-@ConfigurationProperties(prefix = MybatisPlusProperties.MYBATIS_PLUS_PREFIX)
-public class MybatisPlusProperties {
-
-    public static final String MYBATIS_PLUS_PREFIX = "mybatis-plus";
-
-    /**
-     * Location of MyBatis xml config file.
-     */
-    private String configLocation;
-
-    /**
-     * Locations of MyBatis mapper files.
-     */
-    private String[] mapperLocations;
-
-    /**
-     * Packages to search type aliases. (Package delimiters are ",; \t\n")
-     */
-    private String typeAliasesPackage;
-
-    // TODO 自定义枚举包
-    private String typeEnumsPackage;
-
-    /**
-     * Packages to search for type handlers. (Package delimiters are ",; \t\n")
-     */
-    private String typeHandlersPackage;
-
-    /**
-     * Indicates whether perform presence check of the MyBatis xml config file.
-     */
-    private boolean checkConfigLocation = false;
-
-    /**
-     * Execution mode for {@link org.mybatis.spring.SqlSessionTemplate}.
-     */
-    private ExecutorType executorType;
-
-    /**
-     * Externalized properties for MyBatis configuration.
-     */
-    private Properties configurationProperties;
-    /**
-     * Externalized properties for MyBatis configuration.
-     */
-    @NestedConfigurationProperty
-    private GlobalConfig globalConfig;
-
-    /**
-     * A Configuration object for customize default settings. If {@link #configLocation}
-     * is specified, this property is not used.
-     */
-    @NestedConfigurationProperty
-    private MybatisConfiguration configuration;
-
-    /**
-     * @since 1.1.0
-     */
-    public String getConfigLocation() {
-        return this.configLocation;
-    }
-
-    /**
-     * @since 1.1.0
-     */
-    public void setConfigLocation(String configLocation) {
-        this.configLocation = configLocation;
-    }
-
-    public String[] getMapperLocations() {
-        return this.mapperLocations;
-    }
-
-    public void setMapperLocations(String[] mapperLocations) {
-        this.mapperLocations = mapperLocations;
-    }
-
-    public String getTypeHandlersPackage() {
-        return this.typeHandlersPackage;
-    }
-
-    public void setTypeHandlersPackage(String typeHandlersPackage) {
-        this.typeHandlersPackage = typeHandlersPackage;
-    }
-
-    public String getTypeAliasesPackage() {
-        return this.typeAliasesPackage;
-    }
-
-    public void setTypeAliasesPackage(String typeAliasesPackage) {
-        this.typeAliasesPackage = typeAliasesPackage;
-    }
-
-    public String getTypeEnumsPackage() {
-        return typeEnumsPackage;
-    }
-
-    public void setTypeEnumsPackage(String typeEnumsPackage) {
-        this.typeEnumsPackage = typeEnumsPackage;
-    }
-
-    public boolean isCheckConfigLocation() {
-        return this.checkConfigLocation;
-    }
-
-    public void setCheckConfigLocation(boolean checkConfigLocation) {
-        this.checkConfigLocation = checkConfigLocation;
-    }
-
-    public ExecutorType getExecutorType() {
-        return this.executorType;
-    }
-
-    public void setExecutorType(ExecutorType executorType) {
-        this.executorType = executorType;
-    }
-
-    /**
-     * @since 1.2.0
-     */
-    public Properties getConfigurationProperties() {
-        return configurationProperties;
-    }
-
-    /**
-     * @since 1.2.0
-     */
-    public void setConfigurationProperties(Properties configurationProperties) {
-        this.configurationProperties = configurationProperties;
-    }
-
-    public MybatisConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(MybatisConfiguration configuration) {
-        this.configuration = configuration;
-    }
-
-    public Resource[] resolveMapperLocations() {
-        ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
-        List<Resource> resources = new ArrayList<Resource>();
-        if (this.mapperLocations != null) {
-            for (String mapperLocation : this.mapperLocations) {
-                try {
-                    Resource[] mappers = resourceResolver.getResources(mapperLocation);
-                    resources.addAll(Arrays.asList(mappers));
-                } catch (IOException e) {
-                    // ignore
-                }
-            }
-        }
-        return resources.toArray(new Resource[resources.size()]);
-    }
-
-    public GlobalConfig getGlobalConfig() {
-        return globalConfig;
-    }
-
-    public void setGlobalConfig(GlobalConfig globalConfig) {
-        this.globalConfig = globalConfig;
-    }
-}

+ 0 - 48
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/SpringBootVFS.java

@@ -1,48 +0,0 @@
-package com.baomidou.mybatisplus.spring.boot.starter;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.ibatis.io.VFS;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-
-/**
- * @author Hans Westerbeek
- * @author Eddú Meléndez
- * @author Kazuki Shimizu
- */
-public class SpringBootVFS extends VFS {
-
-    private final ResourcePatternResolver resourceResolver;
-
-    public SpringBootVFS() {
-        this.resourceResolver = new PathMatchingResourcePatternResolver(getClass().getClassLoader());
-    }
-
-    private static String preserveSubpackageName(final URI uri, final String rootPath) {
-        final String uriStr = uri.toString();
-        final int start = uriStr.indexOf(rootPath);
-        return uriStr.substring(start);
-    }
-
-    @Override
-    public boolean isValid() {
-        return true;
-    }
-
-    @Override
-    protected List<String> list(URL url, String path) throws IOException {
-        Resource[] resources = resourceResolver.getResources("classpath*:" + path + "/**/*.class");
-        List<String> resourcePaths = new ArrayList<String>();
-        for (Resource resource : resources) {
-            resourcePaths.add(preserveSubpackageName(resource.getURI(), path));
-        }
-        return resourcePaths;
-    }
-
-}

+ 0 - 4
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/package-info.java

@@ -1,4 +0,0 @@
-/**
- * @author Eddú Meléndez
- */
-package com.baomidou.mybatisplus.spring.boot.starter;

+ 0 - 120
mybatis-plus-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -1,120 +0,0 @@
-{
-  "hints": [{
-    "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-    "name": "mybatis-plus.global-config.id-type",
-    "type": "java.lang.Integer",
-    "description": "主键类型",
-    "values": [
-      {
-        "value": "0",
-        "description": "数据库ID自增"
-      }, {
-        "value": "1",
-        "description": "用户输入ID"
-      }, {
-        "value": "2",
-        "description": "分布式全局唯一ID"
-      }, {
-        "value": "3",
-        "description": "全局唯一ID-UUID"
-      }
-    ]
-  },{
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.field-strategy",
-      "type": "java.lang.Integer",
-      "description": "字段验证策略",
-      "values": [
-        {
-          "value": "0",
-          "description": "忽略判断"
-        }, {
-          "value": "1",
-          "description": "非 NULL 判断"
-        }, {
-          "value": "2",
-          "description": "非空判断"
-        }
-    ]
-  }],
-  "groups": [
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusProperties",
-      "name": "mybatis-plus",
-      "type": "com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusProperties"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusProperties",
-      "name": "mybatis-plus.configuration",
-      "sourceMethod": "getConfiguration()",
-      "type": "com.baomidou.mybatisplus.MybatisConfiguration"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusProperties",
-      "name": "mybatis-plus.global-config",
-      "sourceMethod": "getGlobalConfig()",
-      "type": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig"
-    }
-  ],
-  "properties": [
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.capital-mode",
-      "type": "java.lang.Boolean",
-      "description": "是否大写命名"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.db-column-underline",
-      "type": "java.lang.Boolean",
-      "description": "是否使用下划线命名"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.identifier-quote",
-      "type": "java.lang.String",
-      "description": "标识符"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.key-generator",
-      "type": "java.lang.String",
-      "description": "表关键词key生成器"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.logic-delete-value",
-      "type": "java.lang.String",
-      "description": "逻辑删除全局值"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.logic-not-delete-value",
-      "type": "java.lang.String",
-      "description": "逻辑未删除全局值"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.meta-object-handler",
-      "type": "java.lang.String",
-      "description": "元对象字段填充控制器"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.refresh-mapper",
-      "type": "java.lang.Boolean",
-      "description": "是否动态刷新mapper"
-    },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.sql-injector",
-      "type": "java.lang.String",
-      "description": "SQL注入器"
-    },{
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusProperties",
-      "name": "mybatis-plus.type-enums-package",
-      "type": "java.lang.String",
-      "description": "自定义枚举包"
-    }
-  ]
-}

+ 0 - 1
mybatis-plus-boot-starter/src/main/resources/META-INF/spring-devtools.properties

@@ -1 +0,0 @@
-restart.include.mybatis-plus=/mybatis-plus-[\\w-]+\.jar

+ 0 - 3
mybatis-plus-boot-starter/src/main/resources/META-INF/spring.factories

@@ -1,3 +0,0 @@
-# Auto Configure
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusAutoConfiguration

+ 18 - 15
mybatis-plus-core/build.gradle

@@ -1,26 +1,29 @@
+apply plugin: 'java'
+
+sourceCompatibility = 1.7
+
 dependencies {
-	compile project(":mybatis-plus-support")
+    compile project(":mybatis-plus-annotations")
+    compile rootProject.ext.dependencies["mybatis"]
 	compile rootProject.ext.dependencies["jsqlparser"]
-	compile rootProject.ext.dependencies["mybatis-spring"]
-	compile rootProject.ext.dependencies["mybatis"]
-	optional rootProject.ext.dependencies["spring-context-support"]
-	optional rootProject.ext.dependencies["spring-jdbc"]
-	testCompile rootProject.ext.dependencies["servlet-api"]
+//	compile rootProject.ext.dependencies["mybatis-spring"]
+//	optional rootProject.ext.dependencies["spring-context-support"]
+//	optional rootProject.ext.dependencies["spring-jdbc"]
 	testCompile rootProject.ext.dependencies["mybatis-ehcache"]
 	testCompile rootProject.ext.dependencies["logback-classic"]
 	testCompile rootProject.ext.dependencies["junit"]
 	testCompile (rootProject.ext.dependencies["commons-dbcp2"]){
 		exclude module: "commons-logging"
 	}
-	testCompile rootProject.ext.dependencies["sqlserver"]
-	testCompile rootProject.ext.dependencies["postgresql"]
-	testCompile rootProject.ext.dependencies["oracle"]
-	testCompile rootProject.ext.dependencies["h2"]
-	testCompile rootProject.ext.dependencies["mysql"]
-	testCompile rootProject.ext.dependencies["slf4j-api"]
-	testCompile rootProject.ext.dependencies["spring-test"]
-	testCompile rootProject.ext.dependencies["spring-webmvc"]
-	testCompile rootProject.ext.dependencies["sqlserver"]
+//	testCompile rootProject.ext.dependencies["sqlserver"]
+//	testCompile rootProject.ext.dependencies["postgresql"]
+//	testCompile rootProject.ext.dependencies["oracle"]
+//	testCompile rootProject.ext.dependencies["h2"]
+//	testCompile rootProject.ext.dependencies["mysql"]
+//	testCompile rootProject.ext.dependencies["slf4j-api"]
+//	testCompile rootProject.ext.dependencies["spring-test"]
+//	testCompile rootProject.ext.dependencies["spring-webmvc"]
+//	testCompile rootProject.ext.dependencies["sqlserver"]
 	testCompile rootProject.ext.dependencies["aspectjweaver"]
 	testCompile rootProject.ext.dependencies["lombok"]
 	testCompile rootProject.ext.dependencies["hikaricp"]

+ 2 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisConfiguration.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import org.apache.ibatis.binding.MapperRegistry;
 import org.apache.ibatis.logging.Log;
@@ -22,7 +22,7 @@ import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSession;
 
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 
 /**
  * <p>

+ 12 - 11
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisDefaultParameterHandler.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisDefaultParameterHandler.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import java.lang.reflect.Field;
 import java.sql.PreparedStatement;
@@ -38,14 +38,14 @@ import org.apache.ibatis.type.TypeException;
 import org.apache.ibatis.type.TypeHandler;
 import org.apache.ibatis.type.TypeHandlerRegistry;
 
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.IdWorker;
-import com.baomidou.mybatisplus.toolkit.MapUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
-import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
+import com.baomidou.mybatisplus.annotations.IdType;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.MapUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 
 /**
  * <p>
@@ -55,10 +55,11 @@ import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
  * @author hubin
  * @Date 2016-03-11
  */
+//TODO: 3.0 优化注解填充
 public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
 
     /**
-     * @see org.apache.ibatis.mapping.BoundSql
+     * @see BoundSql
      */
     private static final Field additionalParametersField = getAdditionalParametersField();
     private final TypeHandlerRegistry typeHandlerRegistry;
@@ -80,7 +81,7 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
      * 反射获取BoundSql中additionalParameters参数字段
      *
      * @return
-     * @see org.apache.ibatis.mapping.BoundSql
+     * @see BoundSql
      */
     private static Field getAdditionalParametersField() {
         try {

+ 5 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisMapperAnnotationBuilder.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisMapperAnnotationBuilder.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -92,8 +92,9 @@ import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.TypeHandler;
 import org.apache.ibatis.type.UnknownTypeHandler;
 
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+
 
 /**
  * <p>
@@ -675,4 +676,4 @@ public class MybatisMapperAnnotationBuilder extends MapperAnnotationBuilder {
         return answer;
     }
 
-}
+}

+ 3 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisMapperRegistry.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisMapperRegistry.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -26,7 +26,7 @@ import org.apache.ibatis.binding.MapperRegistry;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSession;
 
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 
 /**
  * <p>
@@ -44,7 +44,7 @@ public class MybatisMapperRegistry extends MapperRegistry {
     public MybatisMapperRegistry(Configuration config) {
         super(config);
         this.config = config;
-        // TODO注入SqlRunner
+        //TODO: 注入SqlRunner
         GlobalConfigUtils.getSqlInjector(config).injectSqlRunner(config);
     }
 

+ 4 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisSessionFactoryBuilder.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisSessionFactoryBuilder.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import java.io.InputStream;
 import java.io.Reader;
@@ -24,9 +24,9 @@ import org.apache.ibatis.executor.ErrorContext;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.IOUtils;
+import com.baomidou.mybatisplus.core.metadata.GlobalConfiguration;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.IOUtils;
 
 /**
  * <p>

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisXMLConfigBuilder.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisXMLConfigBuilder.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import java.io.InputStream;
 import java.io.Reader;

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisXMLLanguageDriver.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisXMLLanguageDriver.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core;
 
 import org.apache.ibatis.executor.parameter.ParameterHandler;
 import org.apache.ibatis.mapping.BoundSql;

+ 2 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/parser/ISqlParser.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/ISqlParser.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins.parser;
+package com.baomidou.mybatisplus.core.assist;
 
 import org.apache.ibatis.reflection.MetaObject;
 
@@ -36,6 +36,7 @@ public interface ISqlParser {
      * @param sql        SQL 语句
      * @return SQL 信息
      */
+    //TODO 3.0 change name
     SqlInfo optimizeSql(MetaObject metaObject, String sql);
 
 }

+ 47 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/ISqlRunner.java

@@ -0,0 +1,47 @@
+package com.baomidou.mybatisplus.core.assist;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+
+import com.baomidou.mybatisplus.core.pagination.Page;
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/2/7
+ */
+public abstract class ISqlRunner {
+
+    public static final String INSERT = "com.baomidou.mybatisplus.mapper.SqlRunner.Insert";
+    public static final String DELETE = "com.baomidou.mybatisplus.mapper.SqlRunner.Delete";
+    public static final String UPDATE = "com.baomidou.mybatisplus.mapper.SqlRunner.Update";
+    public static final String SELECT_LIST = "com.baomidou.mybatisplus.mapper.SqlRunner.SelectList";
+    public static final String SELECT_OBJS = "com.baomidou.mybatisplus.mapper.SqlRunner.SelectObjs";
+    public static final String COUNT = "com.baomidou.mybatisplus.mapper.SqlRunner.Count";
+    public static final String SQLScript = "${sql}";
+    public static final String SQL = "sql";
+
+    public static SqlSessionFactory FACTORY;
+
+    public abstract boolean insert(String sql, Object... args);
+
+    public abstract boolean delete(String sql, Object... args);
+
+    public abstract boolean update(String sql, Object... args);
+
+    public abstract List<Map<String, Object>> selectList(String sql, Object... args);
+
+    public abstract List<Object> selectObjs(String sql, Object... args);
+
+    public abstract Object selectObj(String sql, Object... args);
+
+    public abstract int selectCount(String sql, Object... args);
+
+    public abstract Map<String, Object> selectOne(String sql, Object... args);
+
+    public abstract Page<Map<String, Object>> selectPage(Page page, String sql, Object... args);
+}

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/parser/SqlInfo.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/SqlInfo.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins.parser;
+package com.baomidou.mybatisplus.core.assist;
 
 /**
  * <p>

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/EntityWrapper.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/EntityWrapper.java

@@ -13,9 +13,10 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.conditions;
 
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>

+ 3 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/MybatisAbstractSQL.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/MybatisAbstractSQL.java

@@ -13,15 +13,15 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.core.conditions;
 
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>

+ 2 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/SqlPlus.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/SqlPlus.java

@@ -13,10 +13,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.conditions;
 
-import com.baomidou.mybatisplus.MybatisAbstractSQL;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>

+ 29 - 11
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/Wrapper.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/Wrapper.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.conditions;
 
 import java.io.Serializable;
 import java.util.Arrays;
@@ -23,15 +23,15 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import com.baomidou.mybatisplus.entity.Column;
-import com.baomidou.mybatisplus.entity.Columns;
-import com.baomidou.mybatisplus.enums.SqlLike;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.toolkit.ArrayUtils;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.toolkit.MapUtils;
-import com.baomidou.mybatisplus.toolkit.SqlUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.enums.SqlLike;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.metadata.Column;
+import com.baomidou.mybatisplus.core.metadata.Columns;
+import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.MapUtils;
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 
 /**
@@ -1475,7 +1475,7 @@ public abstract class Wrapper<T> implements Serializable {
             for (int i = 0; i < params.length; ++i) {
                 String genParamName = MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
                 sqlStr = sqlStr.replace(String.format(PLACE_HOLDER, i),
-                        String.format(MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
+                    String.format(MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
                 paramNameValuePairs.put(genParamName, params[i]);
             }
         }
@@ -1540,4 +1540,22 @@ public abstract class Wrapper<T> implements Serializable {
         this.paramAlias = paramAlias;
         return this;
     }
+
+    //TODO: 3.0
+    public boolean isEmptyWrapper() {
+        return checkWrapperEmpty();
+    }
+    //TODO: 3.0 提供protect方法,让子类可覆盖
+    protected boolean checkWrapperEmpty() {
+        return sql.isEmptyOfWhere() && sqlSelect == null;
+    }
+
+    public static <T> Wrapper<T> getInstance(){
+        return new Wrapper<T>() {
+            @Override
+            public String getSqlSegment() {
+                return null;
+            }
+        };
+    }
 }

+ 15 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/IDBType.java

@@ -0,0 +1,15 @@
+package com.baomidou.mybatisplus.core.enums;
+
+/**
+ * <p>
+ * DBType 抽象接口
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/2/7
+ */
+public interface IDBType {
+
+    //TODO: 3.0
+    public String getQuote();
+}

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/IEnum.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/IEnum.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.core.enums;
 
 import java.io.Serializable;
 

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/SqlLike.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlLike.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.core.enums;
 
 /**
  * <p>

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/SqlMethod.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlMethod.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.core.enums;
 
 /**
  * <p>

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/exceptions/MybatisPlusException.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/exceptions/MybatisPlusException.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.exceptions;
+package com.baomidou.mybatisplus.core.exceptions;
 
 /**
  * <p>

+ 14 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/MetaObjectHandler.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/MetaObjectHandler.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.handlers;
 
 import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.SystemMetaObject;
@@ -112,4 +112,17 @@ public abstract class MetaObjectHandler {
         return true;
     }
 
+    public static MetaObjectHandler getInstance(){
+        return new MetaObjectHandler() {
+            @Override
+            public void insertFill(MetaObject metaObject) {
+                //default do nothing
+            }
+
+            @Override
+            public void updateFill(MetaObject metaObject) {
+                //default do nothing
+            }
+        };
+    }
 }

+ 163 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/SqlReservedWordsHandler.java

@@ -0,0 +1,163 @@
+package com.baomidou.mybatisplus.core.handlers;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.baomidou.mybatisplus.core.metadata.GlobalConfiguration;
+
+/**
+ * <p>
+ * 数据库关键字处理
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/2/6
+ */
+public abstract class SqlReservedWordsHandler {
+
+    public static final Set<String> RESERVED_WORDS;
+
+    static {
+        String[] words = {"AUDIT", "VOLUMES", "MINVALUE", "STATIC", "FLOOR", "CATALOG", "YEAR", "TRIGGER_CATALOG", "WLM",
+            "DISCONNECT", "PARTITION", "LEFT", " MODE", "SEARCH", "CURRENT_PATH", "DAYOFYEAR", "SIZE", "RESTRICT", "RELEASE",
+            "WHERE", "POSTFIX", "SQLWARNING", "UID", "AS", "AT", "SYSID", "DATABASE", "SPECIFIC_NAME", "TIMEZONE_MINUTE",
+            "LC_CTYPE", "ATTRIBUTES", "LOCATION", "A", "DOMAIN", "C", "SET", " INCREMENT", "MERGE", "G", "DAYS", "HEADER",
+            "K", "CONSTRAINT", "M", "PRECISION", "ROLE", "COLLATION_NAME", "BY", "STRAIGHT_JOIN", "CHARACTER", "INSTEAD",
+            "DUAL", "DSNHATTR", "BERNOULLI", " ADD", "CLUSTERED", "CONTINUE", "DIV", "OPERATOR", "SETS", "SECURITY",
+            "CURRENT_LC_CTYPE", "TRUNCATE", "CURSOR", "SQL_LOW_PRIORITY_UPDATES", "CONSTRAINT_SCHEMA", "STATEMENT",
+            "TABLE_NAME", "NODENUMBER", "DO", "RECOVERY", "LOW_PRIORITY", "ADMIN", "ESCAPED", "CAPTURE", "ALLOW", "VARYING",
+            "DISABLE", "STRICT", "SQL_BIG_RESULT", "ABORT", "FOR", "IMPLICIT", "USING", "EXEC", "DEFERRABLE", "RAISERROR",
+            "USER_DEFINED_TYPE_NAME", "VALIDATOR", "UNDO", "STATE", "WITHIN", "NCHAR", "ABSOLUTE", "PREORDER", "SCHEMA",
+            "SEQUENCE", "ASSIGNMENT", "COLUMNS", "END-EXEC1", "GO", "ROW_NUMBER", "BIT", "INTERSECT", "SYSDATE", "WITH",
+            "CLASS_ORIGIN", "ACTION", "ISNULL", "VALIDATE", " COMPRESS", "START", "CHARACTER_LENGTH", "BULK", "EVERY",
+            "NULLIF", "CEIL", "FLUSH", "MIN_ROWS", "GRANTED", "IF", "BIT_LENGTH", "PARAMETER", "CHARACTER_SET_SCHEMA",
+            "DEFINITION", "NCLOB", "FIELDS", "IN", "DISTINCT", "STYLE", "IS", "MASTER_BIND", "REGR_INTERCEPT", "TERMINATE",
+            "FORCE", "FENCED", " IMMEDIATE", "MAP", "READTEXT", "SYSFUN", "EXIT", "DBCC", "OPENROWSET", "COLLATION", "GOTO",
+            "RAID0", "MAX", "CASCADE", "DELIMITERS", "TRANSACTION", "SECQTY", "IGNORE", "COMMENT", "OFF", "CHARACTERS",
+            "IDENTITYCOL", "USAGE", "UPDATE", "SAVE", "REQUIRE", "DISTINCTROW", "USE", "RETURNS", "LOCATORS",
+            "CHARACTERISTICS", "FIRST", "LINENO", "ONLINE", "SELECT", "EXCLUDING", "TABLES", "OUTFILE", "ERASE", "GREATEST",
+            "UTC_DATE", "VARCHARACTER", "INVOKER", "STOGROUP", "DEPTH", "CURRENT_USER", "LN", "ARRAY", "ATOMIC", " ALTER",
+            "COLUMN_NAME", "COLUMN", "MODE", " COMMENT", "DECIMAL", "RESET", "NEW_TABLE", "ROUTINE_NAME", "COMPRESS",
+            "OVERLAY", "READ_WRITE", "COALESCE", "STATUS", " EXCLUSIVE", "UNBOUNDED", "REGR_SLOPE", "CORRESPONDING",
+            "TIMESTAMP", "MESSAGE_OCTET_LENGTH", "SQL_LOG_OFF", "RETURNED_LENGTH", "DISALLOW", "PRIVILEGES", "SQL", "READ",
+            " IDENTIFIED", "REAL", "LESS", "DIAGNOSTICS", "QUERYNO", "NO", "FLOAT", "COMMAND_FUNCTION_CODE",
+            "CURRENT_TIMESTAMP", "TIES", "ROUTINE", "SUBLIST", "FOLLOWING", "ROLLBACK", "MEMBER", "DSSIZE", "DUMP",
+            "EXTERNAL", "GROUPING", "OF", "CHANGE", "RECHECK", " NUMBER", "ON", "DBINFO", "OR", "EQUALS", "CREATEROLE",
+            "PRIMARY", "SSL", "MATCHED", "DAYOFWEEK", "DYNAMIC_FUNCTION_CODE", "ENCODING", "OPTIMIZATION", "SECOND",
+            "UNKNOWN", "HOUR_SECOND", "REFERENCES", "ROWS", "JAVA", "SPATIAL", "INHERIT", "CREATE",
+            "PARAMETER_SPECIFIC_SCHEMA", "LEAST", "OLD", "TRIGGER", "BETWEEN", "OBID", "CONVERT", "POSITION", "PROCESS",
+            "SQL_SELECT_LIMIT", "NOTHING", "DEALLOCATE", "SUBPAGES", "INNER", "SQL_BIG_SELECTS", "EACH", "OPTIONALLY",
+            "SETUSER", "BIGINT", "NOAUDIT", "SUM", "OPTIONS", "MIN", "BITVAR", "VARCHAR", "SQLCA", "KEY", "PROGRAM", "CALL",
+            "WAITFOR", "RELOAD", "DELAY_KEY_WRITE", "USER_DEFINED_TYPE_SCHEMA", "RLIKE", "EDITPROC", "GROUP",
+            "DATETIME_INTERVAL_PRECISION", "ASSOCIATE", "RESTORE", "OFFSET", "TEMPORARY", "STANDARD", "OPENDATASOURCE",
+            "STATISTICS", "COBOL", "SECOND_MICROSECOND", "NULLABLE", "COMMITTED", "DELAYED", "PERCENT", " ONLINE", "DB2SQL",
+            "TO", "CONSTRUCTOR", "DB2GNRL", "UNION", "FREEZE", "SCOPE", "CLASS", "VIEW", "LINES", "ASSERTION", "PACKAGE",
+            "TRIGGER_NAME", "CONSTRAINTS", "LABEL", "CURRENT_TIME", "DEFERRED", "REPLACE", "KEY_MEMBER", "INTEGER",
+            "OVERRIDING", "UNIQUE", " MAXEXTENTS", "TRAILING", "COVAR_SAMP", "FINAL", " NOAUDIT", "FULL", "NAME", "YEARS",
+            "ROW_COUNT", "NOCREATEROLE", "CEILING", "LAST", "MAXVALUE", "QUOTE", "TOAST", "LOCALTIME", "CONTAINS", "GENERAL",
+            "DELIMITER", "STDIN", "REGEXP", "REGR_COUNT", "NOTIFY", "NEXT", "GLOBAL", "LEAVE", "SHOW", "SHUTDOWN", "VERBOSE",
+            "NORMALIZE", "CURRENT_TIMEZONE", "MOD", "EXISTS", "TIME", "MYISAM", "INHERITS", "DATETIME", "HOURS",
+            "NOMINVALUE", "BOOL", "ERRLVL", "NESTING", "FALSE", "MINUTES", "SECTION", "NOCHECK", "NOTNULL",
+            "PERCENTILE_CONT", "SYMMETRIC", "VALID", "PLAN", "SHARE", "TRAN", "STDDEV_SAMP", "WHEN",
+            "TRANSACTIONS_COMMITTED", "BREAK", "LOCAL", "CONSTRAINT_CATALOG", "DICTIONARY", "LOGIN", "CLUSTER", "GRANTS",
+            "DAY_MINUTE", "LONGBLOB", "CYCLE", "CAST", "INSTANCE", "VARCHAR2", "FUNCTION", "LEADING", "MODIFIES", "NOWAIT",
+            "CASE", "OUT", "OPTIMIZE", "REGR_SXX", "REGR_SXY", "OVERLAPS", "GET", "DENSE_RANK", "PUBLIC", "COUNT", "TREAT",
+            "NAMES", " NOCOMPRESS", "IDENTITY_INSERT", "NONCLUSTERED", "LENGTH", "UNSIGNED", "CHAR", "BEGIN", "MAX_ROWS",
+            "WRITE", "ORDER", "ISOLATION", "REPLICATION", "SQL_CALC_FOUND_ROWS", "REGR_SYY", "LANCOMPILER", " CLUSTER",
+            "CHARACTER_SET_NAME", "SIGNAL", "SUBMULTISET", "COLLATE", "MODIFY", "INSTANTIABLE", "UNCOMMITTED", "RESIGNAL",
+            "MORE", "PROC", "REPEATABLE", "COMPLETION", "KEY_TYPE", "KILL", "TRANSFORMS", "VOLATILE", "INPUT", "SUBSTRING",
+            "ZONE", "VCAT", "DEREF", "AUXILIARY", "REGR_AVGY", "REGR_AVGX", "TEMPLATE", "INCLUDING", "INSENSITIVE", "BOTH",
+            "CHARACTER_SET_CATALOG", "ENABLE", "EXCEPT", "HOSTS", "SCHEMA_NAME", "PREFIX", "SCROLL", "METHOD", "DAY_SECOND",
+            "DESTRUCTOR", "OIDS", "INT", "PASCAL", "COLLID", "PART", "ALSO", "CARDINALITY", "ACCESS", "OPENQUERY", "CLOB",
+            "COMMIT", "DISPATCH", "STRUCTURE", "DETERMINISTIC", "SAVEPOINT", "UNTIL", "USER", "TEMP", "MEDIUMBLOB", "MOVE",
+            "CROSS", "SMALLINT", "UESCAPE", "USER_DEFINED_TYPE_CATALOG", "RESULT", "SQLID", "PATH", "RESULT_SET_LOCATOR",
+            "PURGE", "TRIM", "ROWGUIDCOL", "RAW", "RANK", "VAR_POP", "MUMPS", "TRANSLATION", "MINUS", "EXPLAIN",
+            "PARAMETER_SPECIFIC_CATALOG", " INITIAL", "MESSAGE_LENGTH", "HOUR_MINUTE", "LISTEN", "WIDTH_BUCKET", "STORAGE",
+            "CURRENT_DEFAULT_TRANSFORM_GROUP", "STDOUT", "CUBE", "IMMUTABLE", "REGR_R2", "SQL_LOG_UPDATE", "XOR",
+            "FREETEXTTABLE", "ALTER", "MONTHNAME", "FUSION", "DESTROY", "PARAMETER_SPECIFIC_NAME", "TEXTSIZE", "SPACE",
+            "UPPER", "ABS", "CREATEUSER", "INTEGRITY", "OCTET_LENGTH", "TINYINT", "INTERVAL", "COLLATION_SCHEMA",
+            "CATALOG_NAME", "UNLISTEN", "MASTER_SSL_VERIFY_SERVER_CERT", "POWER", "CONNECTION", "PAD", "REF", "LOCALE",
+            "OPERATION", "SIMPLE", "VARBINARY", "VARIABLES", "ADA", "VIRTUAL", " FILE", "SYSTEM", "ADD", "SCOPE_CATALOG",
+            "SQLERROR", "CHECKED", "VARIANT", "OLD_TABLE", "INFIX", "TRUSTED", "INDEX", "FOUND", "HOLD", "EXTRACT",
+            "OFFSETS", "ATTRIBUTE", "PERCENTILE_DISC", "ITERATE", "CURRENT_SERVER", "CACHE", " LOCK", "CURRENT", " NOWAIT",
+            "RETURNED_SQLSTATE", "SYSPROC", "CONNECTION_NAME", "END", "PRESERVE", "LOAD", "TERMINATED", "BINARY", "FORWARD",
+            "SOME", "LAST_INSERT_ID", "OUTER", "INFILE", "RENAME", "EXCLUSIVE", "FILTER", "IDENTIFIED", "NORMALIZED",
+            " COLUMN", "INITIALLY", "OVER", "CURRENT_ROLE", "GRANT", "OTHERS", "SONAME", "CHAR_LENGTH", "NOMAXVALUE",
+            "ROWID", "DEFAULT", "SQRT", "JOIN", "LOCK", "TEXT", "UNNEST", "AVG_ROW_LENGTH", "SESSION_USER", "AGGREGATE",
+            "MULTISET", "ELSE", "TRANSACTION_ACTIVE", "LANGUAGE", "PERCENT_RANK", "ENUM", "NATIONAL", "SETOF",
+            "RETURNED_CARDINALITY", "SYNONYM", "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "SPECIFICTYPE", "TOP", "FORTRAN",
+            "DEGREE", "ASYMMETRIC", "GRAPHIC", "ALWAYS", "MEDIUMTEXT", "SYSTEM_USER", "ROUTINE_CATALOG", "CURSOR_NAME",
+            "RIGHT", "STABLE", "FILE", "CREATEDB", "DISTRIBUTED", "FILLFACTOR", "FETCH", "NUMERIC", "STARTING", "REVOKE",
+            "SQLEXCEPTION", "DYNAMIC", "CHAIN", "CALLED", "INCREMENT", "ELEMENT", "MAXEXTENTS", "ROUTINE_SCHEMA",
+            "IO_AFTER_GTIDS", "TRIGGER_SCHEMA", "ALL", "NEW", "THAN", "ALIAS", "HOST", "VALUE", "LOGS", "SERIALIZABLE",
+            "X509", "AUTO_INCREMENT", "BACKUP", "MINUTE_MICROSECOND", "ALLOCATE", "HOLDLOCK", "MINUTE", "SCALE", "TINYTEXT",
+            "DESCRIBE", "NOCREATEDB", " INTERSECT", " PCTFREE", " PRIOR", "NULL", "TRUE", "PCTFREE", "EXISTING",
+            "PARAMETERS", "OBJECT", "TABLESPACE", "UTC_TIME", " LEVEL", "MODULE", "PASSWORD", "EXCLUDE", "SQL_WARNINGS",
+            "AND", "SQLCODE", "ROW", "CURRENT_DATE", "MESSAGE_TEXT", "DISK", "RANGE", "VACUUM", "MLSLABEL", "STORED", "HOUR",
+            "CONCAT", "APPLICATION", "INITIAL", "ANY", "PLI", "HEAP", " AUDIT", "NATURAL", "NOINHERIT", "STORES", "UNNAMED",
+            "KEYS", "RESTART", "READS", "NUMPARTS", "CSV", "IMPLEMENTATION", "ORDERING", "TRANSLATE", "REINDEX", "JAR",
+            "EXP", "MATCH", "PRINT", "NOCREATEUSER", "CHECKSUM", "ELSEIF", "MONTH", "ROWCOUNT", "AFTER", "CLOSE", "RRN",
+            "MONTHS", "OWNER", "DENY", "END-EXEC", "INCLUDE", "OCTETS", "UPDATETEXT", "PRIOR", "SYSIBM", " DATE",
+            "SCRATCHPAD", "NODENAME", "IDENTITY", "ARE", "FULLTEXT", "SOURCE", "CONDITION", "THEN", "PROCEDURAL", "UNLOCK",
+            "HIERARCHY", "ORDINALITY", "INTO", "MICROSECONDS", "REPEAT", "MICROSECOND", "EXCEPTION", "INDICATOR", "FREE",
+            "RETURNED_OCTET_LENGTH", "NOCOMPRESS", "ASC", "DELETE", "COVAR_POP", "VARIABLE", " INDEX", "PREPARED",
+            "GENERATED", "SIMILAR", "LONG", "RESOURCE", "INT1", "INT2", "PROCEDURE", "INT3", "STDDEV_POP", "INT4", "SECONDS",
+            "COLLECT", "ANALYZE", "RUN", "UNDER", "INT8", "OPEN", "DERIVED", "NO_WRITE_TO_BINLOG", "REFERENCING", "STRING",
+            "PSID", "BREADTH", "STAY", "LOCATOR", "NOCACHE", "LOOP", "HIGH_PRIORITY", "IMMEDIATE", "DESC", "FREETEXT",
+            "NUMBER", "AUX", "OUTPUT", "LONGTEXT", "DATABASES", "BOOLEAN", "AVG", "NOT", "PLACING", "INTERSECTION", "LOWER",
+            "SPECIFIC", "MINUTE_SECOND", "FLOAT8", "HAVING", "FIELDPROC", "FLOAT4", "SQLSTATE", "RECONFIGURE", "LOCKMAX",
+            "BACKWARD", "BUFFERPOOL", "VALIDPROC", " MINUS", "COMMAND_FUNCTION", "DROP", "RETURN", "FOREIGN",
+            "PARAMETER_NAME", "TSEQUAL", "SQL_SMALL_RESULT", "RULE", "SERVER_NAME", "DAYOFMONTH", "IO_BEFORE_GTIDS",
+            "PARTIAL", "MEDIUMINT", "TRANSACTIONS_ROLLED_BACK", "OPENXML", " DROP", "ESCAPE", "SCOPE_NAME", "ISAM", "LINEAR",
+            "PARAMETER_ORDINAL_POSITION", " OFFLINE", "ROWNUM", "DATETIME_INTERVAL_CODE", "DEFINED", "LOCALTIMESTAMP",
+            " CONNECT", "ISOBID", "TABLE", "ANALYSE", "DEFINER", "SCOPE_SCHEMA", "COLLATION_CATALOG", "NONE", "PROCESSLIST",
+            "TYPE", "USER_DEFINED_TYPE_CODE", "DESCRIPTOR", "PIECESIZE", "OPTION", "WHENEVER", "ENCLOSED", "LEVEL",
+            "COUNT_BIG", "ASENSITIVE", "LOCKSIZE", "TINYBLOB", "PREPARE", "CHECK", "WITHOUT", "WORK", "HANDLER", "CUME_DIST",
+            "WRITETEXT", "INITIALIZE", "DAY_HOUR", "ILIKE", "CONNECT", "TABLESAMPLE", "INSERT_ID", "MIDDLEINT", "RELATIVE",
+            "LARGE", "ACCESSIBLE", "VALUES", "DOUBLE", "ASUTIME", "DEFAULTS", "NOLOGIN", "TIMEZONE_HOUR", "COMPUTE", "COPY",
+            "SELF", "SESSION", "NOCYCLE", "DUMMY", "WINDOW", "EXECUTE", "PRECEDING", "PACK_KEYS", "NOORDER", "CHECKPOINT",
+            " LONG", "DAY", "AUTHORIZATION", "CCSID", "COLLECTION", "BLOB", "PRIQTY", "RECURSIVE", "ONLY", "FROM",
+            "SQL_BIG_TABLES", "LATERAL", "TRANSFORM", "HOUR_MICROSECOND", "SENSITIVE", "SUBCLASS_ORIGIN", "CONVERSION",
+            "DAY_MICROSECOND", "SEPARATOR", "OPTIMIZER_COSTS", "NOSUPERUSER", "DATE", "ROLLUP", "TOP_LEVEL_COUNT", "CORR",
+            "UNENCRYPTED", "UTC_TIMESTAMP", "LIKE", "ZEROFILL", "DATA", "SUCCESSFUL", "INSERT", "YEAR_MONTH", "OFFLINE",
+            "INOUT", "VAR_SAMP", "BROWSE", "SCHEMAS", "CONSTRAINT_NAME", "PARAMETER_MODE", "LIMIT", "LINKTYPE", "NULLS",
+            "DEC", "CASCADED", "ENCRYPTED", "CONTAINSTABLE", "DYNAMIC_FUNCTION", "CONDITION_NUMBER", "BEFORE", "DB2GENERAL",
+            "DECLARE", "SUPERUSER", "WHILE"};
+
+        RESERVED_WORDS = new HashSet<>(words.length);
+        Collections.addAll(RESERVED_WORDS, words);
+    }
+
+    //TODO: 3.0 这里考虑实现类从GlobalConfiguration获取,所以从GlobalConfiguration中配置,不需要参数调用
+    public abstract String convert(GlobalConfiguration globalConfig, String column);
+
+    public abstract String convertQuote(GlobalConfiguration globalConfig, String column);
+
+    /**
+     * 判断关键字中是否包含该字段
+     *
+     * @param word
+     * @return
+     */
+    protected boolean containsWord(String word) {
+        return null != word && RESERVED_WORDS.contains(word.toUpperCase());
+    }
+
+    //TODO: 3.0
+    //可以考虑一个内部类是实现默认的convert, 通过getInstance()方法创建内部实现
+    public static SqlReservedWordsHandler getInstance(){
+        return new SqlReservedWordsHandler() {
+            @Override
+            public String convert(GlobalConfiguration globalConfig, String column) {
+                return null;
+            }
+
+            @Override
+            public String convertQuote(GlobalConfiguration globalConfig, String column) {
+                return null;
+            }
+        };
+    }
+
+}

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/incrementer/IKeyGenerator.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/incrementer/IKeyGenerator.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.incrementer;
+package com.baomidou.mybatisplus.core.incrementer;
 
 
 /**

+ 45 - 39
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AutoSqlInjector.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.injector;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -25,13 +25,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import com.baomidou.mybatisplus.toolkit.ArrayUtils;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.PluginUtils;
-import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
-import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
 import org.apache.ibatis.executor.keygen.KeyGenerator;
@@ -48,13 +41,20 @@ import org.apache.ibatis.scripting.LanguageDriver;
 import org.apache.ibatis.scripting.defaults.RawSqlSource;
 import org.apache.ibatis.session.Configuration;
 
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.entity.TableFieldInfo;
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.enums.FieldFill;
-import com.baomidou.mybatisplus.enums.FieldStrategy;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.enums.SqlMethod;
+import com.baomidou.mybatisplus.annotations.FieldFill;
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
+import com.baomidou.mybatisplus.annotations.IdType;
+import com.baomidou.mybatisplus.core.assist.ISqlRunner;
+import com.baomidou.mybatisplus.core.enums.SqlMethod;
+import com.baomidou.mybatisplus.core.metadata.GlobalConfiguration;
+import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
+
 
 /**
  * <p>
@@ -110,9 +110,10 @@ public class AutoSqlInjector implements ISqlInjector {
             /**
              * 初始化 SQL 解析
              */
-            if (globalCache.isSqlParserCache()) {
-                PluginUtils.initSqlParserInfoCache(mapperClass);
-            }
+            //TODO: 3.0
+//            if (globalCache.isSqlParserCache()) {
+//                PluginUtils.initSqlParserInfoCache(mapperClass);
+//            }
             TableInfo table = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
             injectSql(builderAssistant, mapperClass, modelClass, table);
         }
@@ -608,8 +609,11 @@ public class AutoSqlInjector implements ISqlInjector {
      * @return
      */
     protected String sqlWordConvert(String convertStr) {
-        GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
-        return SqlReservedWords.convert(globalConfig, convertStr);
+//        GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
+//        return SqlReservedWords.convert(globalConfig, convertStr);
+        //TODO: 3.0
+        // 定义一个interface, 通过GlobalConfiguration获取
+        return convertStr;
     }
 
     /**
@@ -768,7 +772,9 @@ public class AutoSqlInjector implements ISqlInjector {
         where.append("\n<where>");
         where.append("\n<foreach collection=\"cm.keys\" item=\"k\" separator=\"AND\">");
         where.append("\n<if test=\"cm[k] != null\">");
-        where.append("\n").append(SqlReservedWords.convert(getGlobalConfig(), "${k}")).append(" = #{cm[${k}]}");
+        //TODO: 3.0
+        where.append("\n").append(this.getGlobalConfig().getReservedWordsHandler().convert(getGlobalConfig(), "${k}")).append(" = #{cm[${k}]}");
+//        where.append("\n").append(SqlReservedWords.convert(getGlobalConfig(), "${k}")).append(" = #{cm[${k}]}");
         where.append("\n</if>");
         where.append("\n</foreach>");
         where.append("\n</where>");
@@ -966,72 +972,72 @@ public class AutoSqlInjector implements ISqlInjector {
      * initSelectList
      */
     private void initSelectList() {
-        if (hasMappedStatement(SqlRunner.SELECT_LIST)) {
+        if (hasMappedStatement(ISqlRunner.SELECT_LIST)) {
             logger.warn("MappedStatement 'SqlRunner.SelectList' Already Exists");
             return;
         }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Map.class);
-        createSelectMappedStatement(SqlRunner.SELECT_LIST, sqlSource, Map.class);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, ISqlRunner.SQLScript, Map.class);
+        createSelectMappedStatement(ISqlRunner.SELECT_LIST, sqlSource, Map.class);
     }
 
     /**
      * initSelectObjs
      */
     private void initSelectObjs() {
-        if (hasMappedStatement(SqlRunner.SELECT_OBJS)) {
+        if (hasMappedStatement(ISqlRunner.SELECT_OBJS)) {
             logger.warn("MappedStatement 'SqlRunner.SelectObjs' Already Exists");
             return;
         }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Object.class);
-        createSelectMappedStatement(SqlRunner.SELECT_OBJS, sqlSource, Object.class);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, ISqlRunner.SQLScript, Object.class);
+        createSelectMappedStatement(ISqlRunner.SELECT_OBJS, sqlSource, Object.class);
     }
 
     /**
      * initCount
      */
     private void initCount() {
-        if (hasMappedStatement(SqlRunner.COUNT)) {
+        if (hasMappedStatement(ISqlRunner.COUNT)) {
             logger.warn("MappedStatement 'SqlRunner.Count' Already Exists");
             return;
         }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Map.class);
-        createSelectMappedStatement(SqlRunner.COUNT, sqlSource, Integer.class);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, ISqlRunner.SQLScript, Map.class);
+        createSelectMappedStatement(ISqlRunner.COUNT, sqlSource, Integer.class);
     }
 
     /**
      * initInsert
      */
     private void initInsert() {
-        if (hasMappedStatement(SqlRunner.INSERT)) {
+        if (hasMappedStatement(ISqlRunner.INSERT)) {
             logger.warn("MappedStatement 'SqlRunner.Insert' Already Exists");
             return;
         }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Map.class);
-        createUpdateMappedStatement(SqlRunner.INSERT, sqlSource, SqlCommandType.INSERT);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, ISqlRunner.SQLScript, Map.class);
+        createUpdateMappedStatement(ISqlRunner.INSERT, sqlSource, SqlCommandType.INSERT);
     }
 
     /**
      * initUpdate
      */
     private void initUpdate() {
-        if (hasMappedStatement(SqlRunner.UPDATE)) {
+        if (hasMappedStatement(ISqlRunner.UPDATE)) {
             logger.warn("MappedStatement 'SqlRunner.Update' Already Exists");
             return;
         }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Map.class);
-        createUpdateMappedStatement(SqlRunner.UPDATE, sqlSource, SqlCommandType.UPDATE);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, ISqlRunner.SQLScript, Map.class);
+        createUpdateMappedStatement(ISqlRunner.UPDATE, sqlSource, SqlCommandType.UPDATE);
     }
 
     /**
      * initDelete
      */
     private void initDelete() {
-        if (hasMappedStatement(SqlRunner.DELETE)) {
+        if (hasMappedStatement(ISqlRunner.DELETE)) {
             logger.warn("MappedStatement 'SqlRunner.Delete' Already Exists");
             return;
         }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Map.class);
-        createUpdateMappedStatement(SqlRunner.DELETE, sqlSource, SqlCommandType.DELETE);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, ISqlRunner.SQLScript, Map.class);
+        createUpdateMappedStatement(ISqlRunner.DELETE, sqlSource, SqlCommandType.DELETE);
     }
 
     /**

+ 2 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/ISqlInjector.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/ISqlInjector.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.injector;
 
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.session.Configuration;
@@ -48,7 +48,7 @@ public interface ISqlInjector {
      * 注入SqlRunner相关
      *
      * @param configuration
-     * @see com.baomidou.mybatisplus.mapper.SqlRunner
+     * @see com.baomidou.mybatisplus.core.assist.ISqlRunner
      */
     void injectSqlRunner(Configuration configuration);
 

+ 3 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/BaseMapper.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/mapper/BaseMapper.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.mapper;
 
 import java.io.Serializable;
 import java.util.Collection;
@@ -23,6 +23,8 @@ import java.util.Map;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.session.RowBounds;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+
 /**
  * <p>
  * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能

+ 6 - 6
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/entity/Column.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/Column.java

@@ -13,13 +13,13 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.entity;
+package com.baomidou.mybatisplus.core.metadata;
 
 import java.io.Serializable;
 
-import com.baomidou.mybatisplus.mapper.SqlRunner;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.assist.ISqlRunner;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>
@@ -63,8 +63,8 @@ public class Column implements Serializable {
             return StringUtils.EMPTY;
         }
         String quote = null;
-        if (isEscape() && SqlRunner.FACTORY != null) {
-            GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(SqlRunner.FACTORY.getConfiguration());
+        if (isEscape() && ISqlRunner.FACTORY != null) {
+            GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(ISqlRunner.FACTORY.getConfiguration());
             quote = globalConfig.getIdentifierQuote() == null ? globalConfig.getDbType().getQuote() : globalConfig.getIdentifierQuote();
         }
         return AS + (StringUtils.isNotEmpty(quote) ? String.format(quote, as) : as);

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/entity/Columns.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/Columns.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.entity;
+package com.baomidou.mybatisplus.core.metadata;
 
 import java.io.Serializable;
 import java.util.ArrayList;

+ 44 - 26
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/entity/GlobalConfiguration.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/GlobalConfiguration.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.entity;
+package com.baomidou.mybatisplus.core.metadata;
 
 import java.io.Serializable;
 import java.util.Set;
@@ -23,16 +23,15 @@ import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 
 import com.baomidou.mybatisplus.MybatisSqlSessionTemplate;
-import com.baomidou.mybatisplus.enums.DBType;
-import com.baomidou.mybatisplus.enums.FieldStrategy;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
-import com.baomidou.mybatisplus.mapper.ISqlInjector;
-import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.JdbcUtils;
-import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
+import com.baomidou.mybatisplus.annotations.IdType;
+import com.baomidou.mybatisplus.core.enums.IDBType;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.core.handlers.SqlReservedWordsHandler;
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
+import com.baomidou.mybatisplus.core.injector.ISqlInjector;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>
@@ -55,7 +54,7 @@ public class GlobalConfiguration implements Serializable {
     /**
      * 数据库类型
      */
-    private DBType dbType;
+    private IDBType dbType;
     /**
      * 主键类型(默认 ID_WORKER)
      */
@@ -75,7 +74,11 @@ public class GlobalConfiguration implements Serializable {
     /**
      * 元对象字段填充控制器
      */
-    private MetaObjectHandler metaObjectHandler = new DefaultMetaObjectHandler();
+    private MetaObjectHandler metaObjectHandler = MetaObjectHandler.getInstance();
+    /**
+     * //TODO: 3.0
+     */
+    private SqlReservedWordsHandler reservedWordsHandler;
     /**
      * 字段验证策略
      */
@@ -145,22 +148,24 @@ public class GlobalConfiguration implements Serializable {
         this.logicNotDeleteValue = logicNotDeleteValue;
     }
 
-    public DBType getDbType() {
+    public IDBType getDbType() {
         return dbType;
     }
 
-    /**
-     * 根据jdbcUrl设置数据库类型
-     *
-     * @param jdbcUrl
-     */
-    public void setDbTypeOfJdbcUrl(String jdbcUrl) {
-        this.dbType = JdbcUtils.getDbType(jdbcUrl);
-    }
+//    /**
+//     * 根据jdbcUrl设置数据库类型
+//     *
+//     * @param jdbcUrl
+//     */
+    //TODO: 3.0 通过其他途径设置dbType
+//    public void setDbTypeOfJdbcUrl(String jdbcUrl) {
+//        this.dbType = JdbcUtils.getDbType(jdbcUrl);
+//    }
 
-    public void setDbType(String dbType) {
-        this.dbType = DBType.getDBType(dbType);
-    }
+    //TODO 3.0 通过其他途径设置dbType
+//    public void setDbType(String dbType) {
+//        this.dbType = DBType.getDBType(dbType);
+//    }
 
     public IdType getIdType() {
         return idType;
@@ -194,6 +199,15 @@ public class GlobalConfiguration implements Serializable {
         this.metaObjectHandler = metaObjectHandler;
     }
 
+    public SqlReservedWordsHandler getReservedWordsHandler() {
+        return reservedWordsHandler;
+    }
+
+    public GlobalConfiguration setReservedWordsHandler(SqlReservedWordsHandler reservedWordsHandler) {
+        this.reservedWordsHandler = reservedWordsHandler;
+        return this;
+    }
+
     public FieldStrategy getFieldStrategy() {
         return fieldStrategy;
     }
@@ -224,6 +238,7 @@ public class GlobalConfiguration implements Serializable {
 
     public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
         this.sqlSessionFactory = sqlSessionFactory;
+        //TODO: 3.0 在extension中初始化这个对象
         this.sqlSession = new MybatisSqlSessionTemplate(sqlSessionFactory);
     }
 
@@ -248,7 +263,10 @@ public class GlobalConfiguration implements Serializable {
 
     public void setSqlKeywords(String sqlKeywords) {
         if (StringUtils.isNotEmpty(sqlKeywords)) {
-            SqlReservedWords.RESERVED_WORDS.addAll(StringUtils.splitWorker(sqlKeywords.toUpperCase(), ",", -1, false));
+            if (reservedWordsHandler == null) {
+                reservedWordsHandler = SqlReservedWordsHandler.getInstance();
+            }
+            reservedWordsHandler.RESERVED_WORDS.addAll(StringUtils.splitWorker(sqlKeywords.toUpperCase(), ",", -1, false));
         }
     }
 

+ 7 - 7
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/entity/TableFieldInfo.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableFieldInfo.java

@@ -13,17 +13,16 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.entity;
+package com.baomidou.mybatisplus.core.metadata;
 
 import java.lang.reflect.Field;
 
+import com.baomidou.mybatisplus.annotations.FieldFill;
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
+import com.baomidou.mybatisplus.annotations.SqlCondition;
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.annotations.TableLogic;
-import com.baomidou.mybatisplus.enums.FieldFill;
-import com.baomidou.mybatisplus.enums.FieldStrategy;
-import com.baomidou.mybatisplus.mapper.SqlCondition;
-import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>
@@ -195,7 +194,8 @@ public class TableFieldInfo {
     }
 
     public void setColumn(GlobalConfiguration globalConfig, String column) {
-        String temp = SqlReservedWords.convert(globalConfig, column);
+        //TODO: 3.0 updated
+        String temp = globalConfig.getReservedWordsHandler().convert(globalConfig, column);
         if (globalConfig.isCapitalMode() && !isRelated()) {
             // 全局大写,非注解指定
             temp = temp.toUpperCase();

+ 3 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/entity/TableInfo.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfo.java

@@ -13,15 +13,15 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.entity;
+package com.baomidou.mybatisplus.core.metadata;
 
 import java.util.List;
 
 import org.apache.ibatis.session.Configuration;
 
+import com.baomidou.mybatisplus.annotations.IdType;
 import com.baomidou.mybatisplus.annotations.KeySequence;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
 /**
  * <p>

+ 9 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 只放mybatis-plus核心代码,不涉及数据库,不添加spring等
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/2/7
+ */
+package com.baomidou.mybatisplus.core;

+ 1 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/Page.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/Page.java

@@ -13,14 +13,13 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins;
+package com.baomidou.mybatisplus.core.pagination;
 
 import java.beans.Transient;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import com.baomidou.mybatisplus.plugins.pagination.Pagination;
 
 /**
  * <p>

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/pagination/PageHelper.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/PageHelper.java

@@ -13,9 +13,10 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins.pagination;
+package com.baomidou.mybatisplus.core.pagination;
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
 
 /**
  * <p>

+ 4 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/pagination/Pagination.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/Pagination.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins.pagination;
+package com.baomidou.mybatisplus.core.pagination;
 
 import java.beans.Transient;
 import java.io.Serializable;
@@ -22,7 +22,8 @@ import java.util.List;
 
 import org.apache.ibatis.session.RowBounds;
 
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlHelper;
 
 /**
  * <p>
@@ -66,7 +67,7 @@ public class Pagination extends RowBounds implements Serializable {
     /**
      * 开启排序(默认 true) 只在代码逻辑判断 并不截取sql分析
      *
-     * @see com.baomidou.mybatisplus.mapper.SqlHelper#fillWrapper
+     * @see SqlHelper#fillWrapper
      **/
     private boolean openSort = true;
 

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/pagination/IDialect.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/pagination/dialect/IDialect.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins.pagination;
+package com.baomidou.mybatisplus.core.pagination.dialect;
 
 /**
  * <p>

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/ArrayUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ArrayUtils.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 /**
  * <p>

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/ClassUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ClassUtils.java

@@ -1,6 +1,7 @@
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
 /**
  * ClassUtils

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/CollectionUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/CollectionUtils.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.util.Collection;
 

+ 2 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/EnumUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/EnumUtils.java

@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 
-import com.baomidou.mybatisplus.enums.IEnum;
+import com.baomidou.mybatisplus.core.enums.IEnum;
 
 /**
  * <p>

+ 13 - 12
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/GlobalConfigUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/GlobalConfigUtils.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.sql.Connection;
 import java.util.Map;
@@ -13,15 +13,15 @@ import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.enums.DBType;
-import com.baomidou.mybatisplus.enums.FieldStrategy;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
-import com.baomidou.mybatisplus.mapper.AutoSqlInjector;
-import com.baomidou.mybatisplus.mapper.ISqlInjector;
-import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
+import com.baomidou.mybatisplus.annotations.IdType;
+import com.baomidou.mybatisplus.core.enums.IDBType;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
+import com.baomidou.mybatisplus.core.injector.AutoSqlInjector;
+import com.baomidou.mybatisplus.core.injector.ISqlInjector;
+import com.baomidou.mybatisplus.core.metadata.GlobalConfiguration;
 
 /**
  * <p>
@@ -124,7 +124,7 @@ public class GlobalConfigUtils {
         return cache;
     }
 
-    public static DBType getDbType(Configuration configuration) {
+    public static IDBType getDbType(Configuration configuration) {
         return getGlobalConfig(configuration).getDbType();
     }
 
@@ -190,7 +190,8 @@ public class GlobalConfigUtils {
             globalConfig.setSqlKeywords(connection.getMetaData().getSQLKeywords());
             // 自动设置数据库类型
             if (globalConfig.getDbType() == null) {
-                globalConfig.setDbTypeOfJdbcUrl(jdbcUrl);
+                //TODO: 3.0 set jdbcurl
+//                globalConfig.setDbTypeOfJdbcUrl(jdbcUrl);
             }
         } catch (Exception e) {
             throw new MybatisPlusException("Error: GlobalConfigUtils setMetaData Fail !  Cause:" + e);

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/IOUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IOUtils.java

@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.io.Closeable;
 import java.io.IOException;

+ 2 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/IdWorker.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IdWorker.java

@@ -13,10 +13,11 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.util.UUID;
 
+
 /**
  * <p>
  * 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法。 <br>

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/MapUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/MapUtils.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.util.Map;
 

+ 14 - 18
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/PluginUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/PluginUtils.java

@@ -13,22 +13,15 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
-import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
-import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.SystemMetaObject;
 
-import com.baomidou.mybatisplus.annotations.SqlParser;
-import com.baomidou.mybatisplus.entity.SqlParserInfo;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-
 /**
  * <p>
  * 插件工具类
@@ -37,15 +30,16 @@ import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
  * @author TaoYu , hubin
  * @since 2017-06-20
  */
-public final class PluginUtils {
+public abstract class PluginUtils {
 
     public static final String DELEGATE_BOUNDSQL_SQL = "delegate.boundSql.sql";
     public static final String DELEGATE_MAPPEDSTATEMENT = "delegate.mappedStatement";
 
-    /**
-     * SQL 解析缓存
-     */
-    private static final Map<String, SqlParserInfo> sqlParserInfoCache = new ConcurrentHashMap<>();
+//    /**
+//     * SQL 解析缓存
+//     */
+    //TODO: 3.0 建议专门建一个Util
+//    private static final Map<String, SqlParserInfo> sqlParserInfoCache = new ConcurrentHashMap<>();
 
 
     private PluginUtils() {
@@ -59,7 +53,8 @@ public final class PluginUtils {
      *
      * @param mapperClass Mapper Class
      */
-    public synchronized static void initSqlParserInfoCache(Class<?> mapperClass) {
+    //TODO: 3.0
+    /*public synchronized static void initSqlParserInfoCache(Class<?> mapperClass) {
         Method[] methods = mapperClass.getDeclaredMethods();
         for (Method method : methods) {
             SqlParser sqlParser = method.getAnnotation(SqlParser.class);
@@ -69,7 +64,7 @@ public final class PluginUtils {
                 sqlParserInfoCache.put(sid.toString(), new SqlParserInfo(sqlParser));
             }
         }
-    }
+    }*/
 
     /**
      * <p>
@@ -79,9 +74,10 @@ public final class PluginUtils {
      * @param metaObject 元数据对象
      * @return
      */
-    public static SqlParserInfo getSqlParserInfo(MetaObject metaObject) {
-        return sqlParserInfoCache.get(getMappedStatement(metaObject).getId());
-    }
+    //TODO: 3.0
+//    public static SqlParserInfo getSqlParserInfo(MetaObject metaObject) {
+//        return sqlParserInfoCache.get(getMappedStatement(metaObject).getId());
+//    }
 
     /**
      * <p>

+ 3 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/ReflectionKit.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ReflectionKit.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
@@ -31,7 +31,7 @@ import java.util.Map;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
 
 /**
@@ -212,4 +212,4 @@ public class ReflectionKit {
         }
         return fieldList;
     }
-}
+}

+ 2 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/Sequence.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/Sequence.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.lang.management.ManagementFactory;
 import java.net.InetAddress;
@@ -23,7 +23,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
 /**
  * <p>

+ 6 - 5
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/StringUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/StringUtils.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.sql.Blob;
 import java.util.ArrayList;
@@ -24,7 +24,8 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.sql.StringEscape;
 
 /**
  * <p>
@@ -437,7 +438,7 @@ public class StringUtils {
 	 * @param suffix the suffix to find, may be null
 	 * @return <code>true</code> if the String ends with the suffix, case
 	 * sensitive, or both <code>null</code>
-	 * @see java.lang.String#endsWith(String)
+	 * @see String#endsWith(String)
 	 * @since 2.4
 	 */
 	public static boolean endsWith(String str, String suffix) {
@@ -467,7 +468,7 @@ public class StringUtils {
 	 * @param suffix the suffix to find, may be null
 	 * @return <code>true</code> if the String ends with the suffix, case
 	 * insensitive, or both <code>null</code>
-	 * @see java.lang.String#endsWith(String)
+	 * @see String#endsWith(String)
 	 * @since 2.4
 	 */
 	public static boolean endsWithIgnoreCase(String str, String suffix) {
@@ -486,7 +487,7 @@ public class StringUtils {
 	 *                   insensitive) or not.
 	 * @return <code>true</code> if the String starts with the prefix or both
 	 * <code>null</code>
-	 * @see java.lang.String#endsWith(String)
+	 * @see String#endsWith(String)
 	 */
 	private static boolean endsWith(String str, String suffix, boolean ignoreCase) {
 		if (str == null || suffix == null) {

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/SystemClock.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/SystemClock.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.sql.Timestamp;
 import java.util.concurrent.Executors;

+ 10 - 10
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/TableInfoHelper.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableInfoHelper.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
@@ -36,17 +36,17 @@ import org.apache.ibatis.scripting.LanguageDriver;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSessionFactory;
 
+import com.baomidou.mybatisplus.annotations.IdType;
 import com.baomidou.mybatisplus.annotations.KeySequence;
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.entity.TableFieldInfo;
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
-import com.baomidou.mybatisplus.mapper.SqlRunner;
+import com.baomidou.mybatisplus.core.assist.ISqlRunner;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
+import com.baomidou.mybatisplus.core.metadata.GlobalConfiguration;
+import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
 
 /**
  * <p>
@@ -237,7 +237,7 @@ public class TableInfoHelper {
                 } else {
                     tableInfo.setIdType(globalConfig.getIdType());
                 }
-                
+
                 /* 字段 */
                 String column = field.getName();
                 if (StringUtils.isNotEmpty(tableId.value())) {
@@ -378,7 +378,7 @@ public class TableInfoHelper {
         Configuration configuration = sqlSessionFactory.getConfiguration();
         GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
         // SqlRunner
-        SqlRunner.FACTORY = sqlSessionFactory;
+        ISqlRunner.FACTORY = sqlSessionFactory;
         if (globalConfig == null) {
             GlobalConfiguration defaultCache = GlobalConfigUtils.defaults();
             defaultCache.setSqlSessionFactory(sqlSessionFactory);

+ 3 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/SqlFormatter.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlFormatter.java

@@ -4,7 +4,7 @@
  * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit.sql;
 
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -12,6 +12,8 @@ import java.util.Locale;
 import java.util.Set;
 import java.util.StringTokenizer;
 
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
 /**
  * Performs formatting of basic SQL statements (DML + query).
  * <p>

+ 12 - 10
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/SqlHelper.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlHelper.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.core.toolkit.sql;
 
 import java.util.List;
 
@@ -24,13 +24,15 @@ import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.MapUtils;
-import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
+import com.baomidou.mybatisplus.core.conditions.EntityWrapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.pagination.Page;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.MapUtils;
+import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 
 /**
  * <p>
@@ -190,7 +192,7 @@ public class SqlHelper {
         }
         // wrapper 不存创建一个 Condition
         if (isEmptyOfWrapper(wrapper)) {
-            wrapper = Condition.create();
+            wrapper = new EntityWrapper<>();
         }
         // 排序 fixed gitee issues/IHF7N
         if (page.isOpenSort() && page.isSearchCount()) {
@@ -213,7 +215,7 @@ public class SqlHelper {
      * @return
      */
     public static boolean isEmptyOfWrapper(Wrapper<?> wrapper) {
-        return null == wrapper || Condition.EMPTY == wrapper;
+        return null == wrapper || wrapper.isEmptyWrapper();
     }
 
     /**

+ 9 - 6
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/SqlUtils.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlUtils.java

@@ -13,15 +13,17 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit.sql;
 
 import java.util.List;
 
-import com.baomidou.mybatisplus.enums.SqlLike;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.plugins.pagination.Pagination;
-import com.baomidou.mybatisplus.plugins.parser.ISqlParser;
-import com.baomidou.mybatisplus.plugins.parser.SqlInfo;
+import com.baomidou.mybatisplus.core.assist.ISqlParser;
+import com.baomidou.mybatisplus.core.assist.SqlInfo;
+import com.baomidou.mybatisplus.core.enums.SqlLike;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.pagination.Pagination;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>
@@ -39,6 +41,7 @@ public class SqlUtils {
 
     static {
         try {
+            //TODO: 3.0
             DEFAULT_CLASS = (Class<ISqlParser>) Class.forName("com.baomidou.mybatisplus.plugins.pagination.optimize.JsqlParserCountOptimize");
         } catch (ClassNotFoundException e) {
             //skip

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/StringEscape.java → mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/StringEscape.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.toolkit;
+package com.baomidou.mybatisplus.core.toolkit.sql;
 
 /**
  * <p>

+ 0 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/package-info.java

@@ -1,4 +0,0 @@
-/**
- * mybatis-plus 对 mybatis 功能增强,使之用起来更加顺手。
- */
-package com.baomidou.mybatisplus;

+ 0 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/package-info.java

@@ -1,4 +0,0 @@
-/**
- * mybatis 分页插件,支持不同数据库方言实现类
- */
-package com.baomidou.mybatisplus.plugins.pagination.dialects;

+ 0 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/pagination/optimize/package-info.java

@@ -1,4 +0,0 @@
-/**
- * COUNT SQL 优化相关类
- */
-package com.baomidou.mybatisplus.plugins.pagination.optimize;

+ 0 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/parser/package-info.java

@@ -1,4 +0,0 @@
-/**
- * SQL 解析相关类
- */
-package com.baomidou.mybatisplus.plugins.parser;

+ 0 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/plugins/parser/tenant/package-info.java

@@ -1,4 +0,0 @@
-/**
- * mybatis 租户插件实现类
- */
-package com.baomidou.mybatisplus.plugins.parser.tenant;

+ 0 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/spring/package-info.java

@@ -1,4 +0,0 @@
-/**
- * Spring相关类
- */
-package com.baomidou.mybatisplus.spring;

+ 9 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 针对core的测试用例
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/2/7
+ */
+package com.baomidou.mybatisplus.core.test;

+ 12 - 0
mybatis-plus-extension/build.gradle

@@ -0,0 +1,12 @@
+apply plugin: 'java'
+
+sourceCompatibility = 1.7
+
+dependencies {
+    compile project(":mybatis-plus-core")
+    compile rootProject.ext.dependencies["mybatis-spring"]
+    compile rootProject.ext.dependencies["mybatis"]
+    provided rootProject.ext.dependencies["spring-context-support"]
+    provided rootProject.ext.dependencies["spring-jdbc"]
+    testCompile group: 'junit', name: 'junit', version: '4.12'
+}

+ 2 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisMapWrapperFactory.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/MybatisMapWrapperFactory.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.extension;
 
 import java.util.Map;
 
@@ -6,7 +6,7 @@ import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
 import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
 
-import com.baomidou.mybatisplus.mapper.MybatisMapWrapper;
+import com.baomidou.mybatisplus.extension.handlers.MybatisMapWrapper;
 
 /**
  * <p>

+ 3 - 3
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/MybatisSqlSessionTemplate.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/MybatisSqlSessionTemplate.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus;
+package com.baomidou.mybatisplus.extension;
 
 import static java.lang.reflect.Proxy.newProxyInstance;
 
@@ -36,7 +36,7 @@ import org.springframework.beans.factory.DisposableBean;
 import org.springframework.dao.support.PersistenceExceptionTranslator;
 import org.springframework.util.Assert;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
 /**
  * Copy SqlSessionTemplate
@@ -410,4 +410,4 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
             }
         }
     }
-}
+}

+ 13 - 15
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/activerecord/Model.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/activerecord/Model.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.activerecord;
+package com.baomidou.mybatisplus.extension.activerecord;
 
 import java.io.Serializable;
 import java.util.HashMap;
@@ -23,14 +23,12 @@ import java.util.Map;
 import org.apache.ibatis.session.SqlSession;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.baomidou.mybatisplus.enums.SqlMethod;
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.mapper.Condition;
-import com.baomidou.mybatisplus.mapper.SqlHelper;
-import com.baomidou.mybatisplus.mapper.SqlRunner;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.enums.SqlMethod;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.pagination.Page;
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlHelper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>
@@ -123,7 +121,7 @@ public abstract class Model<T extends Model> implements Serializable {
      */
     @Transactional
     public boolean delete(String whereClause, Object... args) {
-        return delete(Condition.create().where(whereClause, args));
+        return delete(Wrapper.<T>getInstance().where(whereClause, args));
     }
 
     /**
@@ -185,7 +183,7 @@ public abstract class Model<T extends Model> implements Serializable {
     @Transactional
     public boolean update(String whereClause, Object... args) {
         // update
-        return update(Condition.create().where(whereClause, args));
+        return update(Wrapper.<T>getInstance().where(whereClause, args));
     }
 
     /**
@@ -267,7 +265,7 @@ public abstract class Model<T extends Model> implements Serializable {
      * @return
      */
     public List<T> selectList(String whereClause, Object... args) {
-        return selectList(Condition.create().where(whereClause, args));
+        return selectList(Wrapper.<T>getInstance().where(whereClause, args));
     }
 
     /**
@@ -292,7 +290,7 @@ public abstract class Model<T extends Model> implements Serializable {
      * @return
      */
     public T selectOne(String whereClause, Object... args) {
-        return selectOne(Condition.create().where(whereClause, args));
+        return selectOne(Wrapper.<T>getInstance().where(whereClause, args));
     }
 
     /**
@@ -325,7 +323,7 @@ public abstract class Model<T extends Model> implements Serializable {
      */
     @SuppressWarnings("unchecked")
     public Page<T> selectPage(Page<T> page, String whereClause, Object... args) {
-        return selectPage(page, Condition.create().where(whereClause, args));
+        return selectPage(page, Wrapper.<T>getInstance().where(whereClause, args));
     }
 
     /**
@@ -338,7 +336,7 @@ public abstract class Model<T extends Model> implements Serializable {
      * @return
      */
     public int selectCount(String whereClause, Object... args) {
-        return selectCount(Condition.create().where(whereClause, args));
+        return selectCount(Wrapper.<T>getInstance().where(whereClause, args));
     }
 
     /**

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/DBType.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/enums/DBType.java

@@ -13,9 +13,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.enums;
+package com.baomidou.mybatisplus.extension.enums;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 
 /**
  * <p>
@@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
  * @author hubin
  * @Date 2016-04-15
  */
+//TODO: 3.0 如何在GlobalConfiguration里面支持?
 public enum DBType {
     /**
      * MYSQL

+ 3 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/handlers/BlobTypeHandler.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/BlobTypeHandler.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.handlers;
+package com.baomidou.mybatisplus.extension.handlers;
 
 import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
@@ -25,8 +25,8 @@ import java.sql.SQLException;
 import org.apache.ibatis.type.BaseTypeHandler;
 import org.apache.ibatis.type.JdbcType;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>

+ 3 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/handlers/EnumTypeHandler.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/EnumTypeHandler.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.baomidou.mybatisplus.handlers;
+package com.baomidou.mybatisplus.extension.handlers;
 
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
@@ -23,8 +23,8 @@ import java.sql.SQLException;
 import org.apache.ibatis.type.BaseTypeHandler;
 import org.apache.ibatis.type.JdbcType;
 
-import com.baomidou.mybatisplus.enums.IEnum;
-import com.baomidou.mybatisplus.toolkit.EnumUtils;
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.baomidou.mybatisplus.core.toolkit.EnumUtils;
 
 /**
  * <p>

+ 2 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/mapper/MybatisMapWrapper.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/MybatisMapWrapper.java

@@ -1,11 +1,11 @@
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.extension.handlers;
 
 import java.util.Map;
 
 import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.wrapper.MapWrapper;
 
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>

+ 8 - 7
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/plugins/SqlParserHandler.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/SqlParserHandler.java

@@ -13,18 +13,18 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.plugins;
+package com.baomidou.mybatisplus.extension.handlers;
 
 import java.util.List;
 
 import org.apache.ibatis.reflection.MetaObject;
 
-import com.baomidou.mybatisplus.entity.SqlParserInfo;
-import com.baomidou.mybatisplus.plugins.parser.ISqlParser;
-import com.baomidou.mybatisplus.plugins.parser.ISqlParserFilter;
-import com.baomidou.mybatisplus.plugins.parser.SqlInfo;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.core.assist.ISqlParser;
+import com.baomidou.mybatisplus.core.assist.SqlInfo;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.extension.plugins.parser.ISqlParserFilter;
+import com.baomidou.mybatisplus.extension.plugins.parser.SqlParserInfo;
 
 /**
  * <p>
@@ -50,6 +50,7 @@ public abstract class SqlParserHandler {
             // SQL 解析
             if (CollectionUtils.isNotEmpty(this.sqlParserList)) {
                 // @SqlParser(filter = true) 跳过该方法解析
+                //TODO: 3.0 新建parserUtil
                 SqlParserInfo sqlParserInfo = PluginUtils.getSqlParserInfo(metaObject);
                 if (null != sqlParserInfo && sqlParserInfo.getFilter()) {
                     return;

+ 3 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/incrementer/DB2KeyGenerator.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/DB2KeyGenerator.java

@@ -1,4 +1,6 @@
-package com.baomidou.mybatisplus.incrementer;
+package com.baomidou.mybatisplus.extension.incrementer;
+
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 
 /**
  * <p>

+ 3 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/incrementer/H2KeyGenerator.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/H2KeyGenerator.java

@@ -1,4 +1,6 @@
-package com.baomidou.mybatisplus.incrementer;
+package com.baomidou.mybatisplus.extension.incrementer;
+
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 
 /**
  * <p>

+ 3 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/incrementer/OracleKeyGenerator.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/OracleKeyGenerator.java

@@ -13,7 +13,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.incrementer;
+package com.baomidou.mybatisplus.extension.incrementer;
+
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 
 /**
  * <p>

+ 3 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/incrementer/PostgreKeyGenerator.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/PostgreKeyGenerator.java

@@ -1,4 +1,6 @@
-package com.baomidou.mybatisplus.incrementer;
+package com.baomidou.mybatisplus.extension.incrementer;
+
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 
 /**
  * <p>

+ 9 - 7
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/mapper/LogicSqlInjector.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/LogicSqlInjector.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.extension.injector;
 
 import java.util.List;
 import java.util.Map;
@@ -21,11 +21,11 @@ import java.util.Map;
 import org.apache.ibatis.mapping.SqlSource;
 import org.apache.ibatis.scripting.defaults.RawSqlSource;
 
-import com.baomidou.mybatisplus.entity.TableFieldInfo;
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.enums.SqlMethod;
-import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.enums.SqlMethod;
+import com.baomidou.mybatisplus.core.injector.AutoSqlInjector;
+import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 /**
  * <p>
@@ -290,7 +290,9 @@ public class LogicSqlInjector extends AutoSqlInjector {
             where.append("\n<if test=\"cm!=null and !cm.isEmpty\">");
             where.append("\n<foreach collection=\"cm.keys\" item=\"k\" separator=\"AND\">");
             where.append("\n<if test=\"cm[k] != null\">");
-            where.append(SqlReservedWords.convert(getGlobalConfig(), "\n${k}")).append(" = #{cm[${k}]}");
+//            where.append(SqlReservedWords.convert(getGlobalConfig(), "\n${k}")).append(" = #{cm[${k}]}");
+            //TODO: 3.0
+            where.append(getGlobalConfig().getReservedWordsHandler().convert(getGlobalConfig(), "\n${k}")).append(" = #{cm[${k}]}");
             where.append("</if>");
             where.append("\n</foreach>");
             where.append("\n</if>");

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ *   mybatis-plus扩展功能,包括分页,sql解析,spring集成
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/2/6
+ */
+package com.baomidou.mybatisplus.extension;

Some files were not shown because too many files changed in this diff