Browse Source

Merge remote-tracking branch 'origin/dev' into dev

= 7 years ago
parent
commit
16f809821d
34 changed files with 235 additions and 270 deletions
  1. 1 1
      build.gradle
  2. 3 1
      src/main/java/com/baomidou/mybatisplus/MybatisDefaultParameterHandler.java
  3. 1 0
      src/main/java/com/baomidou/mybatisplus/MybatisMapperAnnotationBuilder.java
  4. 3 1
      src/main/java/com/baomidou/mybatisplus/MybatisMapperRegistry.java
  5. 32 34
      src/main/java/com/baomidou/mybatisplus/MybatisSqlSessionTemplate.java
  6. 2 1
      src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java
  7. 1 0
      src/main/java/com/baomidou/mybatisplus/generator/config/converts/MySqlTypeConvert.java
  8. 1 0
      src/main/java/com/baomidou/mybatisplus/generator/config/converts/OracleTypeConvert.java
  9. 1 0
      src/main/java/com/baomidou/mybatisplus/generator/config/converts/PostgreSqlTypeConvert.java
  10. 1 0
      src/main/java/com/baomidou/mybatisplus/generator/config/converts/SqlServerTypeConvert.java
  11. 9 5
      src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java
  12. 1 0
      src/main/java/com/baomidou/mybatisplus/mapper/EntityWrapper.java
  13. 2 0
      src/main/java/com/baomidou/mybatisplus/mapper/LogicSqlInjector.java
  14. 0 130
      src/main/java/com/baomidou/mybatisplus/mapper/PostgreSqlInjector.java
  15. 9 6
      src/main/java/com/baomidou/mybatisplus/mapper/SqlHelper.java
  16. 53 26
      src/main/java/com/baomidou/mybatisplus/mapper/Wrapper.java
  17. 6 0
      src/main/java/com/baomidou/mybatisplus/plugins/CachePaginationInterceptor.java
  18. 3 0
      src/main/java/com/baomidou/mybatisplus/plugins/PerformanceInterceptor.java
  19. 5 2
      src/main/java/com/baomidou/mybatisplus/plugins/SqlExplainInterceptor.java
  20. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/DB2Dialect.java
  21. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/H2Dialect.java
  22. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/HSQLDialect.java
  23. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/MySqlDialect.java
  24. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/OracleDialect.java
  25. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/PostgreDialect.java
  26. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServer2005Dialect.java
  27. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServerDialect.java
  28. 1 0
      src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLiteDialect.java
  29. 55 23
      src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java
  30. 2 0
      src/main/java/com/baomidou/mybatisplus/spring/MybatisMapperRefresh.java
  31. 5 0
      src/main/java/com/baomidou/mybatisplus/toolkit/SqlReservedWords.java
  32. 22 36
      src/main/java/com/baomidou/mybatisplus/toolkit/StringEscape.java
  33. 4 4
      src/main/java/com/baomidou/mybatisplus/toolkit/StringUtils.java
  34. 4 0
      src/main/java/com/baomidou/mybatisplus/toolkit/SystemClock.java

+ 1 - 1
build.gradle

@@ -15,7 +15,7 @@ ext {
 }
 }
 
 
 group = 'com.baomidou'
 group = 'com.baomidou'
-version = '2.1.4'
+version = '2.1.5-SNAPSHOT'
 
 
 description = "Mybatis 增强工具包 - 只做增强不做改变,简化CRUD操作"
 description = "Mybatis 增强工具包 - 只做增强不做改变,简化CRUD操作"
 
 

+ 3 - 1
src/main/java/com/baomidou/mybatisplus/MybatisDefaultParameterHandler.java

@@ -104,7 +104,9 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
      */
      */
     protected static Object processBatch(MappedStatement ms, Object parameterObject) {
     protected static Object processBatch(MappedStatement ms, Object parameterObject) {
         //检查parameterObject
         //检查parameterObject
-        if (null == parameterObject) return null;
+        if (null == parameterObject) {
+            return null;
+        }
         boolean isFill = false;
         boolean isFill = false;
         // 全局配置是否配置填充器
         // 全局配置是否配置填充器
         MetaObjectHandler metaObjectHandler = GlobalConfigUtils.getMetaObjectHandler(ms.getConfiguration());
         MetaObjectHandler metaObjectHandler = GlobalConfigUtils.getMetaObjectHandler(ms.getConfiguration());

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/MybatisMapperAnnotationBuilder.java

@@ -129,6 +129,7 @@ public class MybatisMapperAnnotationBuilder extends MapperAnnotationBuilder {
         sqlProviderAnnotationTypes.add(DeleteProvider.class);
         sqlProviderAnnotationTypes.add(DeleteProvider.class);
     }
     }
 
 
+    @Override
     public void parse() {
     public void parse() {
         String resource = type.toString();
         String resource = type.toString();
         if (!configuration.isResourceLoaded(resource)) {
         if (!configuration.isResourceLoaded(resource)) {

+ 3 - 1
src/main/java/com/baomidou/mybatisplus/MybatisMapperRegistry.java

@@ -48,7 +48,7 @@ public class MybatisMapperRegistry extends MapperRegistry {
         GlobalConfigUtils.getSqlInjector(config).injectSqlRunner(config);
         GlobalConfigUtils.getSqlInjector(config).injectSqlRunner(config);
     }
     }
 
 
-    @SuppressWarnings("unchecked")
+    @Override
     public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
     public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
         final MapperProxyFactory<T> mapperProxyFactory = (MapperProxyFactory<T>) knownMappers.get(type);
         final MapperProxyFactory<T> mapperProxyFactory = (MapperProxyFactory<T>) knownMappers.get(type);
         if (mapperProxyFactory == null) {
         if (mapperProxyFactory == null) {
@@ -61,6 +61,7 @@ public class MybatisMapperRegistry extends MapperRegistry {
         }
         }
     }
     }
 
 
+    @Override
     public <T> boolean hasMapper(Class<T> type) {
     public <T> boolean hasMapper(Class<T> type) {
         return knownMappers.containsKey(type);
         return knownMappers.containsKey(type);
     }
     }
@@ -97,6 +98,7 @@ public class MybatisMapperRegistry extends MapperRegistry {
     /**
     /**
      * @since 3.2.2
      * @since 3.2.2
      */
      */
+    @Override
     public Collection<Class<?>> getMappers() {
     public Collection<Class<?>> getMappers() {
         return Collections.unmodifiableCollection(knownMappers.keySet());
         return Collections.unmodifiableCollection(knownMappers.keySet());
     }
     }

+ 32 - 34
src/main/java/com/baomidou/mybatisplus/MybatisSqlSessionTemplate.java

@@ -118,7 +118,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <T> T selectOne(String statement) {
     public <T> T selectOne(String statement) {
         return this.sqlSessionProxy.<T>selectOne(statement);
         return this.sqlSessionProxy.<T>selectOne(statement);
     }
     }
@@ -126,7 +126,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <T> T selectOne(String statement, Object parameter) {
     public <T> T selectOne(String statement, Object parameter) {
         return this.sqlSessionProxy.<T>selectOne(statement, parameter);
         return this.sqlSessionProxy.<T>selectOne(statement, parameter);
     }
     }
@@ -134,7 +134,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <K, V> Map<K, V> selectMap(String statement, String mapKey) {
     public <K, V> Map<K, V> selectMap(String statement, String mapKey) {
         return this.sqlSessionProxy.<K, V>selectMap(statement, mapKey);
         return this.sqlSessionProxy.<K, V>selectMap(statement, mapKey);
     }
     }
@@ -142,7 +142,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <K, V> Map<K, V> selectMap(String statement, Object parameter, String mapKey) {
     public <K, V> Map<K, V> selectMap(String statement, Object parameter, String mapKey) {
         return this.sqlSessionProxy.<K, V>selectMap(statement, parameter, mapKey);
         return this.sqlSessionProxy.<K, V>selectMap(statement, parameter, mapKey);
     }
     }
@@ -150,7 +150,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <K, V> Map<K, V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowBounds) {
     public <K, V> Map<K, V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowBounds) {
         return this.sqlSessionProxy.<K, V>selectMap(statement, parameter, mapKey, rowBounds);
         return this.sqlSessionProxy.<K, V>selectMap(statement, parameter, mapKey, rowBounds);
     }
     }
@@ -158,7 +158,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <T> Cursor<T> selectCursor(String statement) {
     public <T> Cursor<T> selectCursor(String statement) {
         return this.sqlSessionProxy.selectCursor(statement);
         return this.sqlSessionProxy.selectCursor(statement);
     }
     }
@@ -166,7 +166,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <T> Cursor<T> selectCursor(String statement, Object parameter) {
     public <T> Cursor<T> selectCursor(String statement, Object parameter) {
         return this.sqlSessionProxy.selectCursor(statement, parameter);
         return this.sqlSessionProxy.selectCursor(statement, parameter);
     }
     }
@@ -174,7 +174,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds) {
     public <T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds) {
         return this.sqlSessionProxy.selectCursor(statement, parameter, rowBounds);
         return this.sqlSessionProxy.selectCursor(statement, parameter, rowBounds);
     }
     }
@@ -182,7 +182,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <E> List<E> selectList(String statement) {
     public <E> List<E> selectList(String statement) {
         return this.sqlSessionProxy.<E>selectList(statement);
         return this.sqlSessionProxy.<E>selectList(statement);
     }
     }
@@ -190,7 +190,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <E> List<E> selectList(String statement, Object parameter) {
     public <E> List<E> selectList(String statement, Object parameter) {
         return this.sqlSessionProxy.<E>selectList(statement, parameter);
         return this.sqlSessionProxy.<E>selectList(statement, parameter);
     }
     }
@@ -198,7 +198,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) {
     public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) {
         return this.sqlSessionProxy.<E>selectList(statement, parameter, rowBounds);
         return this.sqlSessionProxy.<E>selectList(statement, parameter, rowBounds);
     }
     }
@@ -206,8 +206,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
-    @SuppressWarnings("rawtypes")
+    @Override
     public void select(String statement, ResultHandler handler) {
     public void select(String statement, ResultHandler handler) {
         this.sqlSessionProxy.select(statement, handler);
         this.sqlSessionProxy.select(statement, handler);
     }
     }
@@ -215,8 +214,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
-    @SuppressWarnings("rawtypes")
+    @Override
     public void select(String statement, Object parameter, ResultHandler handler) {
     public void select(String statement, Object parameter, ResultHandler handler) {
         this.sqlSessionProxy.select(statement, parameter, handler);
         this.sqlSessionProxy.select(statement, parameter, handler);
     }
     }
@@ -224,8 +222,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
-    @SuppressWarnings("rawtypes")
+    @Override
     public void select(String statement, Object parameter, RowBounds rowBounds, ResultHandler handler) {
     public void select(String statement, Object parameter, RowBounds rowBounds, ResultHandler handler) {
         this.sqlSessionProxy.select(statement, parameter, rowBounds, handler);
         this.sqlSessionProxy.select(statement, parameter, rowBounds, handler);
     }
     }
@@ -233,7 +230,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public int insert(String statement) {
     public int insert(String statement) {
         return this.sqlSessionProxy.insert(statement);
         return this.sqlSessionProxy.insert(statement);
     }
     }
@@ -241,7 +238,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public int insert(String statement, Object parameter) {
     public int insert(String statement, Object parameter) {
         return this.sqlSessionProxy.insert(statement, parameter);
         return this.sqlSessionProxy.insert(statement, parameter);
     }
     }
@@ -249,7 +246,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public int update(String statement) {
     public int update(String statement) {
         return this.sqlSessionProxy.update(statement);
         return this.sqlSessionProxy.update(statement);
     }
     }
@@ -257,7 +254,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public int update(String statement, Object parameter) {
     public int update(String statement, Object parameter) {
         return this.sqlSessionProxy.update(statement, parameter);
         return this.sqlSessionProxy.update(statement, parameter);
     }
     }
@@ -265,7 +262,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public int delete(String statement) {
     public int delete(String statement) {
         return this.sqlSessionProxy.delete(statement);
         return this.sqlSessionProxy.delete(statement);
     }
     }
@@ -273,7 +270,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public int delete(String statement, Object parameter) {
     public int delete(String statement, Object parameter) {
         return this.sqlSessionProxy.delete(statement, parameter);
         return this.sqlSessionProxy.delete(statement, parameter);
     }
     }
@@ -281,7 +278,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public <T> T getMapper(Class<T> type) {
     public <T> T getMapper(Class<T> type) {
         return getConfiguration().getMapper(type, this);
         return getConfiguration().getMapper(type, this);
     }
     }
@@ -289,7 +286,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public void commit() {
     public void commit() {
         throw new UnsupportedOperationException("Manual commit is not allowed over a Spring managed SqlSession");
         throw new UnsupportedOperationException("Manual commit is not allowed over a Spring managed SqlSession");
     }
     }
@@ -297,7 +294,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public void commit(boolean force) {
     public void commit(boolean force) {
         throw new UnsupportedOperationException("Manual commit is not allowed over a Spring managed SqlSession");
         throw new UnsupportedOperationException("Manual commit is not allowed over a Spring managed SqlSession");
     }
     }
@@ -305,7 +302,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public void rollback() {
     public void rollback() {
         throw new UnsupportedOperationException("Manual rollback is not allowed over a Spring managed SqlSession");
         throw new UnsupportedOperationException("Manual rollback is not allowed over a Spring managed SqlSession");
     }
     }
@@ -313,7 +310,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public void rollback(boolean force) {
     public void rollback(boolean force) {
         throw new UnsupportedOperationException("Manual rollback is not allowed over a Spring managed SqlSession");
         throw new UnsupportedOperationException("Manual rollback is not allowed over a Spring managed SqlSession");
     }
     }
@@ -321,7 +318,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public void close() {
     public void close() {
         throw new UnsupportedOperationException("Manual close is not allowed over a Spring managed SqlSession");
         throw new UnsupportedOperationException("Manual close is not allowed over a Spring managed SqlSession");
     }
     }
@@ -329,7 +326,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public void clearCache() {
     public void clearCache() {
         this.sqlSessionProxy.clearCache();
         this.sqlSessionProxy.clearCache();
     }
     }
@@ -337,7 +334,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public Configuration getConfiguration() {
     public Configuration getConfiguration() {
         return this.sqlSessionFactory.getConfiguration();
         return this.sqlSessionFactory.getConfiguration();
     }
     }
@@ -345,7 +342,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-
+    @Override
     public Connection getConnection() {
     public Connection getConnection() {
         return this.sqlSessionProxy.getConnection();
         return this.sqlSessionProxy.getConnection();
     }
     }
@@ -355,7 +352,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
      *
      *
      * @since 1.0.2
      * @since 1.0.2
      */
      */
-
+    @Override
     public List<BatchResult> flushStatements() {
     public List<BatchResult> flushStatements() {
         return this.sqlSessionProxy.flushStatements();
         return this.sqlSessionProxy.flushStatements();
     }
     }
@@ -381,7 +378,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
      * @see org.springframework.beans.factory.support.DisposableBeanAdapter#inferDestroyMethodIfNecessary
      * @see org.springframework.beans.factory.support.DisposableBeanAdapter#inferDestroyMethodIfNecessary
      * @see org.springframework.beans.factory.support.DisposableBeanAdapter#CLOSE_METHOD_NAME
      * @see org.springframework.beans.factory.support.DisposableBeanAdapter#CLOSE_METHOD_NAME
      */
      */
-
+    @Override
     public void destroy() throws Exception {
     public void destroy() throws Exception {
         // This method forces spring disposer to avoid call of
         // This method forces spring disposer to avoid call of
         // SqlSessionTemplate.close() which gives UnsupportedOperationException
         // SqlSessionTemplate.close() which gives UnsupportedOperationException
@@ -396,6 +393,7 @@ public class MybatisSqlSessionTemplate implements SqlSession, DisposableBean {
      */
      */
     private class SqlSessionInterceptor implements InvocationHandler {
     private class SqlSessionInterceptor implements InvocationHandler {
 
 
+        @Override
         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
             SqlSession sqlSession = MybatisSqlSessionTemplate.this.sqlSessionFactory
             SqlSession sqlSession = MybatisSqlSessionTemplate.this.sqlSessionFactory
                     .openSession(MybatisSqlSessionTemplate.this.executorType);
                     .openSession(MybatisSqlSessionTemplate.this.executorType);

+ 2 - 1
src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -238,8 +238,9 @@ public class AutoGenerator {
      * @return
      * @return
      */
      */
     private String getSuperClassName(String classPath) {
     private String getSuperClassName(String classPath) {
-        if (StringUtils.isEmpty(classPath))
+        if (StringUtils.isEmpty(classPath)) {
             return null;
             return null;
+        }
         return classPath.substring(classPath.lastIndexOf(".") + 1);
         return classPath.substring(classPath.lastIndexOf(".") + 1);
     }
     }
 
 

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/generator/config/converts/MySqlTypeConvert.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
  */
  */
 public class MySqlTypeConvert implements ITypeConvert {
 public class MySqlTypeConvert implements ITypeConvert {
 
 
+    @Override
     public DbColumnType processTypeConvert(String fieldType) {
     public DbColumnType processTypeConvert(String fieldType) {
         String t = fieldType.toLowerCase();
         String t = fieldType.toLowerCase();
         if (t.contains("char") || t.contains("text")) {
         if (t.contains("char") || t.contains("text")) {

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/generator/config/converts/OracleTypeConvert.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
  */
  */
 public class OracleTypeConvert implements ITypeConvert {
 public class OracleTypeConvert implements ITypeConvert {
 
 
+    @Override
     public DbColumnType processTypeConvert(String fieldType) {
     public DbColumnType processTypeConvert(String fieldType) {
         String t = fieldType.toUpperCase();
         String t = fieldType.toUpperCase();
         if (t.contains("CHAR")) {
         if (t.contains("CHAR")) {

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/generator/config/converts/PostgreSqlTypeConvert.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
  */
  */
 public class PostgreSqlTypeConvert implements ITypeConvert {
 public class PostgreSqlTypeConvert implements ITypeConvert {
 
 
+    @Override
     public DbColumnType processTypeConvert(String fieldType) {
     public DbColumnType processTypeConvert(String fieldType) {
         String t = fieldType.toLowerCase();
         String t = fieldType.toLowerCase();
         if (t.contains("char") || t.contains("text")) {
         if (t.contains("char") || t.contains("text")) {

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/generator/config/converts/SqlServerTypeConvert.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
  */
  */
 public class SqlServerTypeConvert implements ITypeConvert {
 public class SqlServerTypeConvert implements ITypeConvert {
 
 
+    @Override
     public DbColumnType processTypeConvert(String fieldType) {
     public DbColumnType processTypeConvert(String fieldType) {
         String t = fieldType.toLowerCase();
         String t = fieldType.toLowerCase();
         if (t.contains("char") || t.contains("text") || t.contains("xml")) {
         if (t.contains("char") || t.contains("text") || t.contains("xml")) {

+ 9 - 5
src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java

@@ -74,6 +74,7 @@ public class AutoSqlInjector implements ISqlInjector {
      * @param builderAssistant
      * @param builderAssistant
      * @param mapperClass
      * @param mapperClass
      */
      */
+    @Override
     public void inspectInject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass) {
     public void inspectInject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass) {
         String className = mapperClass.toString();
         String className = mapperClass.toString();
         Set<String> mapperRegistryCache = GlobalConfigUtils.getMapperRegistryCache(builderAssistant.getConfiguration());
         Set<String> mapperRegistryCache = GlobalConfigUtils.getMapperRegistryCache(builderAssistant.getConfiguration());
@@ -86,6 +87,7 @@ public class AutoSqlInjector implements ISqlInjector {
     /**
     /**
      * 注入单点 crudSql
      * 注入单点 crudSql
      */
      */
+    @Override
     public void inject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass) {
     public void inject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass) {
         this.configuration = builderAssistant.getConfiguration();
         this.configuration = builderAssistant.getConfiguration();
         this.builderAssistant = builderAssistant;
         this.builderAssistant = builderAssistant;
@@ -606,9 +608,9 @@ public class AutoSqlInjector implements ISqlInjector {
                 columns.append("<choose><when test=\"ew != null and ew.sqlSelect != null\">${ew.sqlSelect}</when><otherwise>");
                 columns.append("<choose><when test=\"ew != null and ew.sqlSelect != null\">${ew.sqlSelect}</when><otherwise>");
             }
             }
             List<TableFieldInfo> fieldList = table.getFieldList();
             List<TableFieldInfo> fieldList = table.getFieldList();
-            int _size = 0;
+            int size = 0;
             if (null != fieldList) {
             if (null != fieldList) {
-                _size = fieldList.size();
+                size = fieldList.size();
             }
             }
 
 
             // 主键处理
             // 主键处理
@@ -618,13 +620,13 @@ public class AutoSqlInjector implements ISqlInjector {
                 } else {
                 } else {
                     columns.append(sqlWordConvert(table.getKeyProperty()));
                     columns.append(sqlWordConvert(table.getKeyProperty()));
                 }
                 }
-                if (_size >= 1) {
+                if (size >= 1) {
                     // 判断其余字段是否存在
                     // 判断其余字段是否存在
                     columns.append(",");
                     columns.append(",");
                 }
                 }
             }
             }
 
 
-            if (_size >= 1) {
+            if (size >= 1) {
                 // 字段处理
                 // 字段处理
                 int i = 0;
                 int i = 0;
                 Iterator<TableFieldInfo> iterator = fieldList.iterator();
                 Iterator<TableFieldInfo> iterator = fieldList.iterator();
@@ -639,7 +641,7 @@ public class AutoSqlInjector implements ISqlInjector {
                         columns.append(fieldInfo.getColumn());
                         columns.append(fieldInfo.getColumn());
                         columns.append(" AS ").append(wordConvert);
                         columns.append(" AS ").append(wordConvert);
                     }
                     }
-                    if (i + 1 < _size) {
+                    if (i + 1 < size) {
                         columns.append(",");
                         columns.append(",");
                     }
                     }
                     i++;
                     i++;
@@ -862,6 +864,8 @@ public class AutoSqlInjector implements ISqlInjector {
     }
     }
 
 
     // --------------------------------------------------------SqlRunner------------------------------------------------------------
     // --------------------------------------------------------SqlRunner------------------------------------------------------------
+
+    @Override
     public void injectSqlRunner(Configuration configuration) {
     public void injectSqlRunner(Configuration configuration) {
         this.configuration = configuration;
         this.configuration = configuration;
         this.languageDriver = configuration.getDefaultScriptingLanguageInstance();
         this.languageDriver = configuration.getDefaultScriptingLanguageInstance();

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/mapper/EntityWrapper.java

@@ -46,6 +46,7 @@ public class EntityWrapper<T> extends Wrapper<T> {
         this.sqlSelect = sqlSelect;
         this.sqlSelect = sqlSelect;
     }
     }
 
 
+    @Override
     public T getEntity() {
     public T getEntity() {
         return entity;
         return entity;
     }
     }

+ 2 - 0
src/main/java/com/baomidou/mybatisplus/mapper/LogicSqlInjector.java

@@ -112,6 +112,7 @@ public class LogicSqlInjector extends AutoSqlInjector {
      * @param modelClass
      * @param modelClass
      * @param table
      * @param table
      */
      */
+    @Override
     protected void injectSelectByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
     protected void injectSelectByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
         if (table.isLogicDelete()) {
         if (table.isLogicDelete()) {
             SqlMethod sqlMethod = SqlMethod.LOGIC_SELECT_BY_ID;
             SqlMethod sqlMethod = SqlMethod.LOGIC_SELECT_BY_ID;
@@ -144,6 +145,7 @@ public class LogicSqlInjector extends AutoSqlInjector {
      * @param modelClass
      * @param modelClass
      * @param table
      * @param table
      */
      */
+    @Override
     protected void injectUpdateByIdSql(boolean selective, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
     protected void injectUpdateByIdSql(boolean selective, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
         if (table.isLogicDelete()) {
         if (table.isLogicDelete()) {
             SqlMethod sqlMethod = selective ? SqlMethod.LOGIC_UPDATE_BY_ID : SqlMethod.LOGIC_UPDATE_ALL_COLUMN_BY_ID;
             SqlMethod sqlMethod = selective ? SqlMethod.LOGIC_UPDATE_BY_ID : SqlMethod.LOGIC_UPDATE_ALL_COLUMN_BY_ID;

+ 0 - 130
src/main/java/com/baomidou/mybatisplus/mapper/PostgreSqlInjector.java

@@ -1,130 +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.mapper;
-
-import java.util.Iterator;
-import java.util.List;
-
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.entity.TableFieldInfo;
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
-
-/**
- * <p>
- * PostgreSql 自动注入器,处理字段大小写敏感,自动双引号转义。
- * </p>
- *
- * @author hubin
- * @Date 2017-07-11
- */
-public class PostgreSqlInjector extends LogicSqlInjector {
-
-    /**
-     * <p>
-     * select sql as 字段转换,默认原样返回,预留子类处理<br>
-     * </p>
-     *
-     * @param columnStr 字段内容
-     * @return
-     */
-    protected String sqlSelectAsColumnConvert(String columnStr) {
-        GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
-        return String.format(globalConfig.getIdentifierQuote(), columnStr);
-    }
-
-
-    /**
-     * <p>
-     * SQL 查询所有表字段
-     * </p>
-     *
-     * @param table
-     * @param entityWrapper 是否为包装类型查询
-     * @return
-     */
-    protected String sqlSelectColumns(TableInfo table, boolean entityWrapper) {
-        StringBuilder columns = new StringBuilder();
-        if (null != table.getResultMap()) {
-            /*
-             * 存在 resultMap 映射返回
-			 */
-            if (entityWrapper) {
-                columns.append("<choose><when test=\"ew != null and ew.sqlSelect != null\">${ew.sqlSelect}</when><otherwise>");
-            }
-            columns.append("*");
-            if (entityWrapper) {
-                columns.append("</otherwise></choose>");
-            }
-        } else {
-            /*
-             * 普通查询
-			 */
-            if (entityWrapper) {
-                columns.append("<choose><when test=\"ew != null and ew.sqlSelect != null\">${ew.sqlSelect}</when><otherwise>");
-            }
-            List<TableFieldInfo> fieldList = table.getFieldList();
-            int _size = 0;
-            if (null != fieldList) {
-                _size = fieldList.size();
-            }
-
-            // 主键处理
-            if (StringUtils.isNotEmpty(table.getKeyProperty())) {
-                if (table.isKeyRelated()) {
-                    columns.append(table.getKeyColumn()).append(" AS ").append(sqlSelectAsColumnConvert(table.getKeyProperty()));
-                } else {
-                    columns.append(sqlWordConvert(table.getKeyProperty()));
-                }
-                if (_size >= 1) {
-                    // 判断其余字段是否存在
-                    columns.append(",");
-                }
-            }
-
-            if (_size >= 1) {
-                // 字段处理
-                int i = 0;
-                Iterator<TableFieldInfo> iterator = fieldList.iterator();
-                while (iterator.hasNext()) {
-                    TableFieldInfo fieldInfo = iterator.next();
-                    // 匹配转换内容
-                    String wordConvert = sqlWordConvert(fieldInfo.getProperty());
-                    if (fieldInfo.getColumn().equals(wordConvert)) {
-                        columns.append(wordConvert);
-                    } else {
-                        // 字段属性不一致
-                        columns.append(fieldInfo.getColumn());
-                        columns.append(" AS ").append(sqlSelectAsColumnConvert(wordConvert));
-                    }
-                    if (i + 1 < _size) {
-                        columns.append(",");
-                    }
-                    i++;
-                }
-            }
-            if (entityWrapper) {
-                columns.append("</otherwise></choose>");
-            }
-        }
-
-		/*
-         * 返回所有查询字段内容
-		 */
-        return columns.toString();
-    }
-}

+ 9 - 6
src/main/java/com/baomidou/mybatisplus/mapper/SqlHelper.java

@@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.toolkit.MapUtils;
 import com.baomidou.mybatisplus.toolkit.MapUtils;
+import com.baomidou.mybatisplus.toolkit.StringUtils;
 import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
 
 
 /**
 /**
@@ -176,14 +177,16 @@ public class SqlHelper {
         if (null == page) {
         if (null == page) {
             return;
             return;
         }
         }
-        //处理Wrapper为空,但是page.getCondition()不为空的情况
-        if (MapUtils.isNotEmpty(page.getCondition()) && isEmptyOfWrapper(wrapper)) {
+        // wrapper 不存创建一个 Condition
+        if (isEmptyOfWrapper(wrapper)) {
             wrapper = Condition.create();
             wrapper = Condition.create();
         }
         }
-        if (isNotEmptyOfWrapper(wrapper)) {
-            if (page.isOpenSort()) {
-                wrapper.orderBy(page.getOrderByField(), page.isAsc());
-            }
+        // 排序
+        if (page.isOpenSort() && StringUtils.isNotEmpty(page.getOrderByField())) {
+            wrapper.orderBy(page.getOrderByField(), page.isAsc());
+        }
+        // MAP 参数查询
+        if (MapUtils.isNotEmpty(page.getCondition())) {
             wrapper.allEq(page.getCondition());
             wrapper.allEq(page.getCondition());
         }
         }
     }
     }

+ 53 - 26
src/main/java/com/baomidou/mybatisplus/mapper/Wrapper.java

@@ -189,6 +189,7 @@ public abstract class Wrapper<T> implements Serializable {
      */
      */
     public abstract String getSqlSegment();
     public abstract String getSqlSegment();
 
 
+    @Override
     public String toString() {
     public String toString() {
         StringBuilder sb = new StringBuilder("Wrapper<T>:");
         StringBuilder sb = new StringBuilder("Wrapper<T>:");
         String sqlSegment = getSqlSegment();
         String sqlSegment = getSqlSegment();
@@ -245,8 +246,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> where(boolean condition, String sqlWhere, Object... params) {
     public Wrapper<T> where(boolean condition, String sqlWhere, Object... params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(sqlWhere, params));
             sql.WHERE(formatSql(sqlWhere, params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -279,8 +281,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return
      * @return
      */
      */
     public Wrapper<T> eq(boolean condition, String column, Object params) {
     public Wrapper<T> eq(boolean condition, String column, Object params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s = {0}", column), params));
             sql.WHERE(formatSql(String.format("%s = {0}", column), params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -308,8 +311,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return
      * @return
      */
      */
     public Wrapper<T> ne(boolean condition, String column, Object params) {
     public Wrapper<T> ne(boolean condition, String column, Object params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s <> {0}", column), params));
             sql.WHERE(formatSql(String.format("%s <> {0}", column), params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -377,8 +381,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return
      * @return
      */
      */
     public Wrapper<T> gt(boolean condition, String column, Object params) {
     public Wrapper<T> gt(boolean condition, String column, Object params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s > {0}", column), params));
             sql.WHERE(formatSql(String.format("%s > {0}", column), params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -406,8 +411,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return
      * @return
      */
      */
     public Wrapper<T> ge(boolean condition, String column, Object params) {
     public Wrapper<T> ge(boolean condition, String column, Object params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s >= {0}", column), params));
             sql.WHERE(formatSql(String.format("%s >= {0}", column), params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -435,8 +441,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return
      * @return
      */
      */
     public Wrapper<T> lt(boolean condition, String column, Object params) {
     public Wrapper<T> lt(boolean condition, String column, Object params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s < {0}", column), params));
             sql.WHERE(formatSql(String.format("%s < {0}", column), params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -464,8 +471,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return
      * @return
      */
      */
     public Wrapper<T> le(boolean condition, String column, Object params) {
     public Wrapper<T> le(boolean condition, String column, Object params) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s <= {0}", column), params));
             sql.WHERE(formatSql(String.format("%s <= {0}", column), params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -493,8 +501,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> and(boolean condition, String sqlAnd, Object... params) {
     public Wrapper<T> and(boolean condition, String sqlAnd, Object... params) {
-        if (condition)
+        if (condition) {
             sql.AND().WHERE(formatSql(sqlAnd, params));
             sql.AND().WHERE(formatSql(sqlAnd, params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -526,8 +535,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> andNew(boolean condition, String sqlAnd, Object... params) {
     public Wrapper<T> andNew(boolean condition, String sqlAnd, Object... params) {
-        if (condition)
+        if (condition) {
             sql.AND_NEW().WHERE(formatSql(sqlAnd, params));
             sql.AND_NEW().WHERE(formatSql(sqlAnd, params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -692,8 +702,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> groupBy(boolean condition, String columns) {
     public Wrapper<T> groupBy(boolean condition, String columns) {
-        if (condition)
+        if (condition) {
             sql.GROUP_BY(columns);
             sql.GROUP_BY(columns);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -726,8 +737,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return EntityWrapper<T>
      * @return EntityWrapper<T>
      */
      */
     public Wrapper<T> having(boolean condition, String sqlHaving, Object... params) {
     public Wrapper<T> having(boolean condition, String sqlHaving, Object... params) {
-        if (condition)
+        if (condition) {
             sql.HAVING(formatSql(sqlHaving, params));
             sql.HAVING(formatSql(sqlHaving, params));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -761,8 +773,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> orderBy(boolean condition, String columns) {
     public Wrapper<T> orderBy(boolean condition, String columns) {
-        if (condition)
+        if (condition) {
             sql.ORDER_BY(columns);
             sql.ORDER_BY(columns);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -823,8 +836,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> like(boolean condition, String column, String value) {
     public Wrapper<T> like(boolean condition, String column, String value) {
-        if (condition)
+        if (condition) {
             handerLike(column, value, SqlLike.DEFAULT, false);
             handerLike(column, value, SqlLike.DEFAULT, false);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -852,8 +866,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> notLike(boolean condition, String column, String value) {
     public Wrapper<T> notLike(boolean condition, String column, String value) {
-        if (condition)
+        if (condition) {
             handerLike(column, value, SqlLike.DEFAULT, true);
             handerLike(column, value, SqlLike.DEFAULT, true);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -903,8 +918,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> like(boolean condition, String column, String value, SqlLike type) {
     public Wrapper<T> like(boolean condition, String column, String value, SqlLike type) {
-        if (condition)
+        if (condition) {
             handerLike(column, value, type, false);
             handerLike(column, value, type, false);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -934,8 +950,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> notLike(boolean condition, String column, String value, SqlLike type) {
     public Wrapper<T> notLike(boolean condition, String column, String value, SqlLike type) {
-        if (condition)
+        if (condition) {
             handerLike(column, value, type, true);
             handerLike(column, value, type, true);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -963,8 +980,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> isNotNull(boolean condition, String columns) {
     public Wrapper<T> isNotNull(boolean condition, String columns) {
-        if (condition)
+        if (condition) {
             sql.IS_NOT_NULL(columns);
             sql.IS_NOT_NULL(columns);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -990,8 +1008,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> isNull(boolean condition, String columns) {
     public Wrapper<T> isNull(boolean condition, String columns) {
-        if (condition)
+        if (condition) {
             sql.IS_NULL(columns);
             sql.IS_NULL(columns);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1017,8 +1036,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> exists(boolean condition, String value) {
     public Wrapper<T> exists(boolean condition, String value) {
-        if (condition)
+        if (condition) {
             sql.EXISTS(value);
             sql.EXISTS(value);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1044,8 +1064,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> notExists(boolean condition, String value) {
     public Wrapper<T> notExists(boolean condition, String value) {
-        if (condition)
+        if (condition) {
             sql.NOT_EXISTS(value);
             sql.NOT_EXISTS(value);
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1132,8 +1153,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> in(boolean condition, String column, Collection<?> value) {
     public Wrapper<T> in(boolean condition, String column, Collection<?> value) {
-        if (condition && CollectionUtils.isNotEmpty(value))
+        if (condition && CollectionUtils.isNotEmpty(value)) {
             sql.WHERE(formatSql(inExpression(column, value, false), value.toArray()));
             sql.WHERE(formatSql(inExpression(column, value, false), value.toArray()));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1161,8 +1183,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> notIn(boolean condition, String column, Collection<?> value) {
     public Wrapper<T> notIn(boolean condition, String column, Collection<?> value) {
-        if (condition && CollectionUtils.isNotEmpty(value))
+        if (condition && CollectionUtils.isNotEmpty(value)) {
             sql.WHERE(formatSql(inExpression(column, value, true), value.toArray()));
             sql.WHERE(formatSql(inExpression(column, value, true), value.toArray()));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1190,8 +1213,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> in(boolean condition, String column, Object[] value) {
     public Wrapper<T> in(boolean condition, String column, Object[] value) {
-        if (condition && ArrayUtils.isNotEmpty(value))
+        if (condition && ArrayUtils.isNotEmpty(value)) {
             sql.WHERE(formatSql(inExpression(column, Arrays.asList(value), false), value));
             sql.WHERE(formatSql(inExpression(column, Arrays.asList(value), false), value));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1219,8 +1243,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> notIn(boolean condition, String column, Object... value) {
     public Wrapper<T> notIn(boolean condition, String column, Object... value) {
-        if (condition && ArrayUtils.isNotEmpty(value))
+        if (condition && ArrayUtils.isNotEmpty(value)) {
             sql.WHERE(formatSql(inExpression(column, Arrays.asList(value), true), value));
             sql.WHERE(formatSql(inExpression(column, Arrays.asList(value), true), value));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1280,8 +1305,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> between(boolean condition, String column, Object val1, Object val2) {
     public Wrapper<T> between(boolean condition, String column, Object val1, Object val2) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s BETWEEN {0} AND {1}", column), val1, val2));
             sql.WHERE(formatSql(String.format("%s BETWEEN {0} AND {1}", column), val1, val2));
+        }
         return this;
         return this;
     }
     }
 
 
@@ -1311,8 +1337,9 @@ public abstract class Wrapper<T> implements Serializable {
      * @return this
      * @return this
      */
      */
     public Wrapper<T> notBetween(boolean condition, String column, Object val1, Object val2) {
     public Wrapper<T> notBetween(boolean condition, String column, Object val1, Object val2) {
-        if (condition)
+        if (condition) {
             sql.WHERE(formatSql(String.format("%s NOT BETWEEN {0} AND {1}", column), val1, val2));
             sql.WHERE(formatSql(String.format("%s NOT BETWEEN {0} AND {1}", column), val1, val2));
+        }
         return this;
         return this;
     }
     }
 
 

+ 6 - 0
src/main/java/com/baomidou/mybatisplus/plugins/CachePaginationInterceptor.java

@@ -67,6 +67,7 @@ public class CachePaginationInterceptor extends PaginationInterceptor implements
      * Physical Pagination Interceptor for all the queries with parameter
      * Physical Pagination Interceptor for all the queries with parameter
      * {@link org.apache.ibatis.session.RowBounds}
      * {@link org.apache.ibatis.session.RowBounds}
      */
      */
+    @Override
     public Object intercept(Invocation invocation) throws Throwable {
     public Object intercept(Invocation invocation) throws Throwable {
 
 
         Object target = invocation.getTarget();
         Object target = invocation.getTarget();
@@ -97,6 +98,7 @@ public class CachePaginationInterceptor extends PaginationInterceptor implements
         return invocation.proceed();
         return invocation.proceed();
     }
     }
 
 
+    @Override
     public Object plugin(Object target) {
     public Object plugin(Object target) {
         if (target instanceof Executor) {
         if (target instanceof Executor) {
             return Plugin.wrap(target, this);
             return Plugin.wrap(target, this);
@@ -107,6 +109,7 @@ public class CachePaginationInterceptor extends PaginationInterceptor implements
         return target;
         return target;
     }
     }
 
 
+    @Override
     public void setProperties(Properties prop) {
     public void setProperties(Properties prop) {
         String dialectType = prop.getProperty("dialectType");
         String dialectType = prop.getProperty("dialectType");
         String dialectClazz = prop.getProperty("dialectClazz");
         String dialectClazz = prop.getProperty("dialectClazz");
@@ -118,16 +121,19 @@ public class CachePaginationInterceptor extends PaginationInterceptor implements
         }
         }
     }
     }
 
 
+    @Override
     public CachePaginationInterceptor setDialectType(String dialectType) {
     public CachePaginationInterceptor setDialectType(String dialectType) {
         this.dialectType = dialectType;
         this.dialectType = dialectType;
         return this;
         return this;
     }
     }
 
 
+    @Override
     public CachePaginationInterceptor setSqlParser(ISqlParser sqlParser) {
     public CachePaginationInterceptor setSqlParser(ISqlParser sqlParser) {
         this.sqlParser = sqlParser;
         this.sqlParser = sqlParser;
         return this;
         return this;
     }
     }
 
 
+    @Override
     public CachePaginationInterceptor setOverflowCurrent(boolean overflowCurrent) {
     public CachePaginationInterceptor setOverflowCurrent(boolean overflowCurrent) {
         this.overflowCurrent = overflowCurrent;
         this.overflowCurrent = overflowCurrent;
         return this;
         return this;

+ 3 - 0
src/main/java/com/baomidou/mybatisplus/plugins/PerformanceInterceptor.java

@@ -73,6 +73,7 @@ public class PerformanceInterceptor implements Interceptor {
     private Method oracleGetOriginalSqlMethod;
     private Method oracleGetOriginalSqlMethod;
     private Method druidGetSQLMethod;
     private Method druidGetSQLMethod;
 
 
+    @Override
     public Object intercept(Invocation invocation) throws Throwable {
     public Object intercept(Invocation invocation) throws Throwable {
         Statement statement;
         Statement statement;
         Object firstArg = invocation.getArgs()[0];
         Object firstArg = invocation.getArgs()[0];
@@ -163,6 +164,7 @@ public class PerformanceInterceptor implements Interceptor {
         return result;
         return result;
     }
     }
 
 
+    @Override
     public Object plugin(Object target) {
     public Object plugin(Object target) {
         if (target instanceof StatementHandler) {
         if (target instanceof StatementHandler) {
             return Plugin.wrap(target, this);
             return Plugin.wrap(target, this);
@@ -170,6 +172,7 @@ public class PerformanceInterceptor implements Interceptor {
         return target;
         return target;
     }
     }
 
 
+    @Override
     public void setProperties(Properties prop) {
     public void setProperties(Properties prop) {
         String maxTime = prop.getProperty("maxTime");
         String maxTime = prop.getProperty("maxTime");
         String format = prop.getProperty("format");
         String format = prop.getProperty("format");

+ 5 - 2
src/main/java/com/baomidou/mybatisplus/plugins/SqlExplainInterceptor.java

@@ -62,6 +62,7 @@ public class SqlExplainInterceptor implements Interceptor {
      */
      */
     private boolean stopProceed = false;
     private boolean stopProceed = false;
 
 
+    @Override
     public Object intercept(Invocation invocation) throws Throwable {
     public Object intercept(Invocation invocation) throws Throwable {
         /**
         /**
          * 处理 DELETE UPDATE 语句
          * 处理 DELETE UPDATE 语句
@@ -110,8 +111,8 @@ public class SqlExplainInterceptor implements Interceptor {
                 SqlCommandType.SELECT);
                 SqlCommandType.SELECT);
         builder.resultMaps(mappedStatement.getResultMaps()).resultSetType(mappedStatement.getResultSetType())
         builder.resultMaps(mappedStatement.getResultMaps()).resultSetType(mappedStatement.getResultSetType())
                 .statementType(mappedStatement.getStatementType());
                 .statementType(mappedStatement.getStatementType());
-        MappedStatement query_statement = builder.build();
-        DefaultParameterHandler handler = new DefaultParameterHandler(query_statement, parameter, boundSql);
+        MappedStatement queryStatement = builder.build();
+        DefaultParameterHandler handler = new DefaultParameterHandler(queryStatement, parameter, boundSql);
         try (PreparedStatement stmt = connection.prepareStatement(sqlExplain)) {
         try (PreparedStatement stmt = connection.prepareStatement(sqlExplain)) {
             handler.setParameters(stmt);
             handler.setParameters(stmt);
             try (ResultSet rs = stmt.executeQuery()) {
             try (ResultSet rs = stmt.executeQuery()) {
@@ -131,6 +132,7 @@ public class SqlExplainInterceptor implements Interceptor {
         }
         }
     }
     }
 
 
+    @Override
     public Object plugin(Object target) {
     public Object plugin(Object target) {
         if (target instanceof Executor) {
         if (target instanceof Executor) {
             return Plugin.wrap(target, this);
             return Plugin.wrap(target, this);
@@ -138,6 +140,7 @@ public class SqlExplainInterceptor implements Interceptor {
         return target;
         return target;
     }
     }
 
 
+    @Override
     public void setProperties(Properties prop) {
     public void setProperties(Properties prop) {
         String stopProceed = prop.getProperty("stopProceed");
         String stopProceed = prop.getProperty("stopProceed");
         if (StringUtils.isNotEmpty(stopProceed)) {
         if (StringUtils.isNotEmpty(stopProceed)) {

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/DB2Dialect.java

@@ -43,6 +43,7 @@ public class DB2Dialect implements IDialect {
         return originalSql.toLowerCase().contains("select distinct");
         return originalSql.toLowerCase().contains("select distinct");
     }
     }
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         int startOfSelect = originalSql.toLowerCase().indexOf("select");
         int startOfSelect = originalSql.toLowerCase().indexOf("select");
         StringBuilder pagingSelect = new StringBuilder(originalSql.length() + 100)
         StringBuilder pagingSelect = new StringBuilder(originalSql.length() + 100)

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/H2Dialect.java

@@ -29,6 +29,7 @@ public class H2Dialect implements IDialect {
 
 
     public static final H2Dialect INSTANCE = new H2Dialect();
     public static final H2Dialect INSTANCE = new H2Dialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder(originalSql);
         StringBuilder sql = new StringBuilder(originalSql);
         sql.append(" limit ").append(limit);
         sql.append(" limit ").append(limit);

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/HSQLDialect.java

@@ -29,6 +29,7 @@ public class HSQLDialect implements IDialect {
 
 
     public static final HSQLDialect INSTANCE = new HSQLDialect();
     public static final HSQLDialect INSTANCE = new HSQLDialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder(originalSql);
         StringBuilder sql = new StringBuilder(originalSql);
         sql.append(" limit ").append(offset).append(",").append(limit);
         sql.append(" limit ").append(offset).append(",").append(limit);

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/MySqlDialect.java

@@ -29,6 +29,7 @@ public class MySqlDialect implements IDialect {
 
 
     public static final MySqlDialect INSTANCE = new MySqlDialect();
     public static final MySqlDialect INSTANCE = new MySqlDialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder(originalSql);
         StringBuilder sql = new StringBuilder(originalSql);
         sql.append(" LIMIT ").append(offset).append(",").append(limit);
         sql.append(" LIMIT ").append(offset).append(",").append(limit);

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/OracleDialect.java

@@ -29,6 +29,7 @@ public class OracleDialect implements IDialect {
 
 
     public static final OracleDialect INSTANCE = new OracleDialect();
     public static final OracleDialect INSTANCE = new OracleDialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder();
         StringBuilder sql = new StringBuilder();
         sql.append("SELECT * FROM ( SELECT TMP.*, ROWNUM ROW_ID FROM ( ");
         sql.append("SELECT * FROM ( SELECT TMP.*, ROWNUM ROW_ID FROM ( ");

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/PostgreDialect.java

@@ -29,6 +29,7 @@ public class PostgreDialect implements IDialect {
 
 
     public static final PostgreDialect INSTANCE = new PostgreDialect();
     public static final PostgreDialect INSTANCE = new PostgreDialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder(originalSql);
         StringBuilder sql = new StringBuilder(originalSql);
         sql.append(" limit ").append(limit).append(" offset ").append(offset);
         sql.append(" limit ").append(limit).append(" offset ").append(offset);

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServer2005Dialect.java

@@ -40,6 +40,7 @@ public class SQLServer2005Dialect implements IDialect {
         }
         }
     }
     }
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder pagingBuilder = new StringBuilder();
         StringBuilder pagingBuilder = new StringBuilder();
         String orderby = getOrderByPart(originalSql);
         String orderby = getOrderByPart(originalSql);

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServerDialect.java

@@ -29,6 +29,7 @@ public class SQLServerDialect implements IDialect {
 
 
     public static final SQLServerDialect INSTANCE = new SQLServerDialect();
     public static final SQLServerDialect INSTANCE = new SQLServerDialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder(originalSql);
         StringBuilder sql = new StringBuilder(originalSql);
         sql.append(" OFFSET ").append(offset).append(" ROWS FETCH NEXT ");
         sql.append(" OFFSET ").append(offset).append(" ROWS FETCH NEXT ");

+ 1 - 0
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLiteDialect.java

@@ -29,6 +29,7 @@ public class SQLiteDialect implements IDialect {
 
 
     public static final SQLiteDialect INSTANCE = new SQLiteDialect();
     public static final SQLiteDialect INSTANCE = new SQLiteDialect();
 
 
+    @Override
     public String buildPaginationSql(String originalSql, int offset, int limit) {
     public String buildPaginationSql(String originalSql, int offset, int limit) {
         StringBuilder sql = new StringBuilder(originalSql);
         StringBuilder sql = new StringBuilder(originalSql);
         sql.append(" limit ").append(limit).append(" offset ").append(offset);
         sql.append(" limit ").append(limit).append(" offset ").append(offset);

+ 55 - 23
src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java

@@ -95,17 +95,20 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         return SqlHelper.table(currentModelClass()).getSqlStatement(sqlMethod.getMethod());
         return SqlHelper.table(currentModelClass()).getSqlStatement(sqlMethod.getMethod());
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insert(T entity) {
     public boolean insert(T entity) {
         return retBool(baseMapper.insert(entity));
         return retBool(baseMapper.insert(entity));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertAllColumn(T entity) {
     public boolean insertAllColumn(T entity) {
         return retBool(baseMapper.insertAllColumn(entity));
         return retBool(baseMapper.insertAllColumn(entity));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertBatch(List<T> entityList) {
     public boolean insertBatch(List<T> entityList) {
         return insertBatch(entityList, 30);
         return insertBatch(entityList, 30);
     }
     }
@@ -117,7 +120,8 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
      * @param batchSize
      * @param batchSize
      * @return
      * @return
      */
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertBatch(List<T> entityList, int batchSize) {
     public boolean insertBatch(List<T> entityList, int batchSize) {
         if (CollectionUtils.isEmpty(entityList)) {
         if (CollectionUtils.isEmpty(entityList)) {
             throw new IllegalArgumentException("Error: entityList must not be empty");
             throw new IllegalArgumentException("Error: entityList must not be empty");
@@ -146,7 +150,8 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
      * @param entity 实体对象
      * @param entity 实体对象
      * @return boolean
      * @return boolean
      */
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertOrUpdate(T entity) {
     public boolean insertOrUpdate(T entity) {
         if (null != entity) {
         if (null != entity) {
             Class<?> cls = entity.getClass();
             Class<?> cls = entity.getClass();
@@ -168,7 +173,8 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         return false;
         return false;
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertOrUpdateAllColumn(T entity) {
     public boolean insertOrUpdateAllColumn(T entity) {
         if (null != entity) {
         if (null != entity) {
             Class<?> cls = entity.getClass();
             Class<?> cls = entity.getClass();
@@ -190,22 +196,26 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         return false;
         return false;
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertOrUpdateBatch(List<T> entityList) {
     public boolean insertOrUpdateBatch(List<T> entityList) {
         return insertOrUpdateBatch(entityList, 30);
         return insertOrUpdateBatch(entityList, 30);
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertOrUpdateBatch(List<T> entityList, int batchSize) {
     public boolean insertOrUpdateBatch(List<T> entityList, int batchSize) {
         return insertOrUpdateBatch(entityList, batchSize, true);
         return insertOrUpdateBatch(entityList, batchSize, true);
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertOrUpdateAllColumnBatch(List<T> entityList) {
     public boolean insertOrUpdateAllColumnBatch(List<T> entityList) {
         return insertOrUpdateBatch(entityList, 30, false);
         return insertOrUpdateBatch(entityList, 30, false);
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean insertOrUpdateAllColumnBatch(List<T> entityList, int batchSize) {
     public boolean insertOrUpdateAllColumnBatch(List<T> entityList, int batchSize) {
         return insertOrUpdateBatch(entityList, batchSize, false);
         return insertOrUpdateBatch(entityList, batchSize, false);
     }
     }
@@ -241,12 +251,14 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         return true;
         return true;
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean deleteById(Serializable id) {
     public boolean deleteById(Serializable id) {
         return retBool(baseMapper.deleteById(id));
         return retBool(baseMapper.deleteById(id));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean deleteByMap(Map<String, Object> columnMap) {
     public boolean deleteByMap(Map<String, Object> columnMap) {
         if (MapUtils.isEmpty(columnMap)) {
         if (MapUtils.isEmpty(columnMap)) {
             throw new MybatisPlusException("deleteByMap columnMap is empty.");
             throw new MybatisPlusException("deleteByMap columnMap is empty.");
@@ -254,47 +266,56 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         return retBool(baseMapper.deleteByMap(columnMap));
         return retBool(baseMapper.deleteByMap(columnMap));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean delete(Wrapper<T> wrapper) {
     public boolean delete(Wrapper<T> wrapper) {
         return retBool(baseMapper.delete(wrapper));
         return retBool(baseMapper.delete(wrapper));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean deleteBatchIds(List<? extends Serializable> idList) {
     public boolean deleteBatchIds(List<? extends Serializable> idList) {
         return retBool(baseMapper.deleteBatchIds(idList));
         return retBool(baseMapper.deleteBatchIds(idList));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean updateById(T entity) {
     public boolean updateById(T entity) {
         return retBool(baseMapper.updateById(entity));
         return retBool(baseMapper.updateById(entity));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean updateAllColumnById(T entity) {
     public boolean updateAllColumnById(T entity) {
         return retBool(baseMapper.updateAllColumnById(entity));
         return retBool(baseMapper.updateAllColumnById(entity));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean update(T entity, Wrapper<T> wrapper) {
     public boolean update(T entity, Wrapper<T> wrapper) {
         return retBool(baseMapper.update(entity, wrapper));
         return retBool(baseMapper.update(entity, wrapper));
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean updateBatchById(List<T> entityList) {
     public boolean updateBatchById(List<T> entityList) {
         return updateBatchById(entityList, 30);
         return updateBatchById(entityList, 30);
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean updateBatchById(List<T> entityList, int batchSize) {
     public boolean updateBatchById(List<T> entityList, int batchSize) {
         return updateBatchById(entityList, batchSize, true);
         return updateBatchById(entityList, batchSize, true);
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean updateAllColumnBatchById(List<T> entityList) {
     public boolean updateAllColumnBatchById(List<T> entityList) {
         return updateAllColumnBatchById(entityList, 30);
         return updateAllColumnBatchById(entityList, 30);
     }
     }
 
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public boolean updateAllColumnBatchById(List<T> entityList, int batchSize) {
     public boolean updateAllColumnBatchById(List<T> entityList, int batchSize) {
         return updateBatchById(entityList, batchSize, false);
         return updateBatchById(entityList, batchSize, false);
     }
     }
@@ -330,58 +351,69 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         return true;
         return true;
     }
     }
 
 
+    @Override
     public T selectById(Serializable id) {
     public T selectById(Serializable id) {
         return baseMapper.selectById(id);
         return baseMapper.selectById(id);
     }
     }
 
 
+    @Override
     public List<T> selectBatchIds(List<? extends Serializable> idList) {
     public List<T> selectBatchIds(List<? extends Serializable> idList) {
         return baseMapper.selectBatchIds(idList);
         return baseMapper.selectBatchIds(idList);
     }
     }
 
 
+    @Override
     public List<T> selectByMap(Map<String, Object> columnMap) {
     public List<T> selectByMap(Map<String, Object> columnMap) {
         return baseMapper.selectByMap(columnMap);
         return baseMapper.selectByMap(columnMap);
     }
     }
 
 
+    @Override
     public T selectOne(Wrapper<T> wrapper) {
     public T selectOne(Wrapper<T> wrapper) {
         return SqlHelper.getObject(baseMapper.selectList(wrapper));
         return SqlHelper.getObject(baseMapper.selectList(wrapper));
     }
     }
 
 
+    @Override
     public Map<String, Object> selectMap(Wrapper<T> wrapper) {
     public Map<String, Object> selectMap(Wrapper<T> wrapper) {
         return SqlHelper.getObject(baseMapper.selectMaps(wrapper));
         return SqlHelper.getObject(baseMapper.selectMaps(wrapper));
     }
     }
 
 
+    @Override
     public Object selectObj(Wrapper<T> wrapper) {
     public Object selectObj(Wrapper<T> wrapper) {
         return SqlHelper.getObject(baseMapper.selectObjs(wrapper));
         return SqlHelper.getObject(baseMapper.selectObjs(wrapper));
     }
     }
 
 
+    @Override
     public int selectCount(Wrapper<T> wrapper) {
     public int selectCount(Wrapper<T> wrapper) {
         return SqlHelper.retCount(baseMapper.selectCount(wrapper));
         return SqlHelper.retCount(baseMapper.selectCount(wrapper));
     }
     }
 
 
+    @Override
     public List<T> selectList(Wrapper<T> wrapper) {
     public List<T> selectList(Wrapper<T> wrapper) {
         return baseMapper.selectList(wrapper);
         return baseMapper.selectList(wrapper);
     }
     }
 
 
-    @SuppressWarnings("unchecked")
+    @Override
     public Page<T> selectPage(Page<T> page) {
     public Page<T> selectPage(Page<T> page) {
         return selectPage(page, Condition.EMPTY);
         return selectPage(page, Condition.EMPTY);
     }
     }
 
 
+    @Override
     public List<Map<String, Object>> selectMaps(Wrapper<T> wrapper) {
     public List<Map<String, Object>> selectMaps(Wrapper<T> wrapper) {
         return baseMapper.selectMaps(wrapper);
         return baseMapper.selectMaps(wrapper);
     }
     }
 
 
+    @Override
     public List<Object> selectObjs(Wrapper<T> wrapper) {
     public List<Object> selectObjs(Wrapper<T> wrapper) {
         return baseMapper.selectObjs(wrapper);
         return baseMapper.selectObjs(wrapper);
     }
     }
 
 
-    @SuppressWarnings({"rawtypes", "unchecked"})
+    @Override
     public Page<Map<String, Object>> selectMapsPage(Page page, Wrapper<T> wrapper) {
     public Page<Map<String, Object>> selectMapsPage(Page page, Wrapper<T> wrapper) {
         SqlHelper.fillWrapper(page, wrapper);
         SqlHelper.fillWrapper(page, wrapper);
         page.setRecords(baseMapper.selectMapsPage(page, wrapper));
         page.setRecords(baseMapper.selectMapsPage(page, wrapper));
         return page;
         return page;
     }
     }
 
 
+    @Override
     public Page<T> selectPage(Page<T> page, Wrapper<T> wrapper) {
     public Page<T> selectPage(Page<T> page, Wrapper<T> wrapper) {
         SqlHelper.fillWrapper(page, wrapper);
         SqlHelper.fillWrapper(page, wrapper);
         page.setRecords(baseMapper.selectPage(page, wrapper));
         page.setRecords(baseMapper.selectPage(page, wrapper));

+ 2 - 0
src/main/java/com/baomidou/mybatisplus/spring/MybatisMapperRefresh.java

@@ -137,6 +137,7 @@ public class MybatisMapperRefresh implements Runnable {
         this.run();
         this.run();
     }
     }
 
 
+    @Override
     public void run() {
     public void run() {
         final GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
         final GlobalConfiguration globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
         /*
         /*
@@ -147,6 +148,7 @@ public class MybatisMapperRefresh implements Runnable {
             final MybatisMapperRefresh runnable = this;
             final MybatisMapperRefresh runnable = this;
             new Thread(new Runnable() {
             new Thread(new Runnable() {
 
 
+                @Override
                 public void run() {
                 public void run() {
                     if (fileSet == null) {
                     if (fileSet == null) {
                         fileSet = new HashSet<>();
                         fileSet = new HashSet<>();

+ 5 - 0
src/main/java/com/baomidou/mybatisplus/toolkit/SqlReservedWords.java

@@ -20,6 +20,7 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.Set;
 
 
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
+import com.baomidou.mybatisplus.enums.DBType;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -161,6 +162,10 @@ public class SqlReservedWords {
      * @return
      * @return
      */
      */
     public static String convert(GlobalConfiguration globalConfig, String column) {
     public static String convert(GlobalConfiguration globalConfig, String column) {
+        if (globalConfig.getDbType() == DBType.POSTGRE) {
+            // POSTGRE 直接转换
+            return convertQuote(globalConfig, column);
+        }
         return containsWord(column) ? convertQuote(globalConfig, column) : column;
         return containsWord(column) ? convertQuote(globalConfig, column) : column;
     }
     }
 
 

+ 22 - 36
src/main/java/com/baomidou/mybatisplus/toolkit/StringEscape.java

@@ -11,56 +11,50 @@ package com.baomidou.mybatisplus.toolkit;
 public class StringEscape {
 public class StringEscape {
 
 
     /**
     /**
+     * <p>
      * 字符串是否需要转义
      * 字符串是否需要转义
+     * </p>
      *
      *
      * @param str
      * @param str
      * @param len
      * @param len
      * @return
      * @return
      */
      */
     private static boolean isEscapeNeededForString(String str, int len) {
     private static boolean isEscapeNeededForString(String str, int len) {
-
         boolean needsHexEscape = false;
         boolean needsHexEscape = false;
-
         for (int i = 0; i < len; ++i) {
         for (int i = 0; i < len; ++i) {
             char c = str.charAt(i);
             char c = str.charAt(i);
-
             switch (c) {
             switch (c) {
-                case 0: /* Must be escaped for 'mysql' */
-
+                /* Must be escaped for 'mysql' */
+                case 0:
                     needsHexEscape = true;
                     needsHexEscape = true;
                     break;
                     break;
-
-                case '\n': /* Must be escaped for logs */
+                /* Must be escaped for logs */
+                case '\n':
                     needsHexEscape = true;
                     needsHexEscape = true;
-
                     break;
                     break;
-
                 case '\r':
                 case '\r':
                     needsHexEscape = true;
                     needsHexEscape = true;
                     break;
                     break;
-
                 case '\\':
                 case '\\':
                     needsHexEscape = true;
                     needsHexEscape = true;
-
                     break;
                     break;
-
                 case '\'':
                 case '\'':
                     needsHexEscape = true;
                     needsHexEscape = true;
-
                     break;
                     break;
-
-                case '"': /* Better safe than sorry */
+                /* Better safe than sorry */
+                case '"':
                     needsHexEscape = true;
                     needsHexEscape = true;
-
                     break;
                     break;
-
-                case '\032': /* This gives problems on Win32 */
+                /* This gives problems on Win32 */
+                case '\032':
                     needsHexEscape = true;
                     needsHexEscape = true;
                     break;
                     break;
+                default:
+                    break;
             }
             }
-
             if (needsHexEscape) {
             if (needsHexEscape) {
-                break; // no need to scan more
+                // no need to scan more
+                break;
             }
             }
         }
         }
         return needsHexEscape;
         return needsHexEscape;
@@ -73,34 +67,29 @@ public class StringEscape {
      * @return
      * @return
      */
      */
     public static String escapeString(String escapeStr) {
     public static String escapeString(String escapeStr) {
-
         if (escapeStr.matches("\'(.+)\'")) {
         if (escapeStr.matches("\'(.+)\'")) {
             escapeStr = escapeStr.substring(1, escapeStr.length() - 1);
             escapeStr = escapeStr.substring(1, escapeStr.length() - 1);
         }
         }
-
         String parameterAsString = escapeStr;
         String parameterAsString = escapeStr;
         int stringLength = escapeStr.length();
         int stringLength = escapeStr.length();
         if (isEscapeNeededForString(escapeStr, stringLength)) {
         if (isEscapeNeededForString(escapeStr, stringLength)) {
-
             StringBuilder buf = new StringBuilder((int) (escapeStr.length() * 1.1));
             StringBuilder buf = new StringBuilder((int) (escapeStr.length() * 1.1));
-
             //
             //
             // Note: buf.append(char) is _faster_ than appending in blocks,
             // Note: buf.append(char) is _faster_ than appending in blocks,
             // because the block append requires a System.arraycopy().... go
             // because the block append requires a System.arraycopy().... go
             // figure...
             // figure...
             //
             //
-
             for (int i = 0; i < stringLength; ++i) {
             for (int i = 0; i < stringLength; ++i) {
                 char c = escapeStr.charAt(i);
                 char c = escapeStr.charAt(i);
-
                 switch (c) {
                 switch (c) {
-                    case 0: /* Must be escaped for 'mysql' */
+                    /* Must be escaped for 'mysql' */
+                    case 0:
                         buf.append('\\');
                         buf.append('\\');
                         buf.append('0');
                         buf.append('0');
 
 
                         break;
                         break;
-
-                    case '\n': /* Must be escaped for logs */
+                    /* Must be escaped for logs */
+                    case '\n':
                         buf.append('\\');
                         buf.append('\\');
                         buf.append('n');
                         buf.append('n');
 
 
@@ -123,24 +112,21 @@ public class StringEscape {
                         buf.append('\'');
                         buf.append('\'');
 
 
                         break;
                         break;
-
-                    case '"': /* Better safe than sorry */
+                    /* Better safe than sorry */
+                    case '"':
                         buf.append('\\');
                         buf.append('\\');
                         buf.append('"');
                         buf.append('"');
 
 
                         break;
                         break;
-
-                    case '\032': /* This gives problems on Win32 */
+                    /* This gives problems on Win32 */
+                    case '\032':
                         buf.append('\\');
                         buf.append('\\');
                         buf.append('Z');
                         buf.append('Z');
-
                         break;
                         break;
-
                     default:
                     default:
                         buf.append(c);
                         buf.append(c);
                 }
                 }
             }
             }
-
             parameterAsString = buf.toString();
             parameterAsString = buf.toString();
         }
         }
         return "\'" + parameterAsString + "\'";
         return "\'" + parameterAsString + "\'";

+ 4 - 4
src/main/java/com/baomidou/mybatisplus/toolkit/StringUtils.java

@@ -259,13 +259,13 @@ public class StringUtils {
     public static String quotaMarkList(Collection<?> coll) {
     public static String quotaMarkList(Collection<?> coll) {
         StringBuilder sqlBuild = new StringBuilder();
         StringBuilder sqlBuild = new StringBuilder();
         sqlBuild.append("(");
         sqlBuild.append("(");
-        int _size = coll.size();
+        int size = coll.size();
         int i = 0;
         int i = 0;
         Iterator<?> iterator = coll.iterator();
         Iterator<?> iterator = coll.iterator();
         while (iterator.hasNext()) {
         while (iterator.hasNext()) {
             String tempVal = StringUtils.quotaMark(iterator.next());
             String tempVal = StringUtils.quotaMark(iterator.next());
             sqlBuild.append(tempVal);
             sqlBuild.append(tempVal);
-            if (i + 1 < _size) {
+            if (i + 1 < size) {
                 sqlBuild.append(",");
                 sqlBuild.append(",");
             }
             }
             i++;
             i++;
@@ -715,7 +715,7 @@ public class StringUtils {
     }
     }
 
 
     private static String wordsAndHyphenAndCamelToConstantCase(String input) {
     private static String wordsAndHyphenAndCamelToConstantCase(String input) {
-        boolean _betweenUpperCases = false;
+        boolean betweenUpperCases = false;
         boolean containsLowerCase = containsLowerCase(input);
         boolean containsLowerCase = containsLowerCase(input);
 
 
         StringBuilder buf = new StringBuilder();
         StringBuilder buf = new StringBuilder();
@@ -729,7 +729,7 @@ public class StringUtils {
             boolean previousIsWhitespace = Character.isWhitespace(previousChar);
             boolean previousIsWhitespace = Character.isWhitespace(previousChar);
             boolean lastOneIsNotUnderscore = (buf.length() > 0) && (buf.charAt(buf.length() - 1) != '_');
             boolean lastOneIsNotUnderscore = (buf.length() > 0) && (buf.charAt(buf.length() - 1) != '_');
             boolean isNotUnderscore = c != '_';
             boolean isNotUnderscore = c != '_';
-            if ((lastOneIsNotUnderscore) && ((isUpperCaseAndPreviousIsLowerCase) || (previousIsWhitespace) || ((_betweenUpperCases)
+            if ((lastOneIsNotUnderscore) && ((isUpperCaseAndPreviousIsLowerCase) || (previousIsWhitespace) || ((betweenUpperCases)
                     && (containsLowerCase) && (isUpperCaseAndPreviousIsUpperCase)))) {
                     && (containsLowerCase) && (isUpperCaseAndPreviousIsUpperCase)))) {
                 buf.append("_");
                 buf.append("_");
             } else if (((separatorAfterDigit) && (Character.isDigit(previousChar))
             } else if (((separatorAfterDigit) && (Character.isDigit(previousChar))

+ 4 - 0
src/main/java/com/baomidou/mybatisplus/toolkit/SystemClock.java

@@ -64,6 +64,8 @@ public class SystemClock {
 
 
     private void scheduleClockUpdating() {
     private void scheduleClockUpdating() {
         ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
         ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
+
+            @Override
             public Thread newThread(Runnable runnable) {
             public Thread newThread(Runnable runnable) {
                 Thread thread = new Thread(runnable, "System Clock");
                 Thread thread = new Thread(runnable, "System Clock");
                 thread.setDaemon(true);
                 thread.setDaemon(true);
@@ -71,6 +73,8 @@ public class SystemClock {
             }
             }
         });
         });
         scheduler.scheduleAtFixedRate(new Runnable() {
         scheduler.scheduleAtFixedRate(new Runnable() {
+
+            @Override
             public void run() {
             public void run() {
                 now.set(System.currentTimeMillis());
                 now.set(System.currentTimeMillis());
             }
             }