浏览代码

回滚方言切换,注释修正.

聂秋秋 5 年之前
父节点
当前提交
87e825cae2

+ 7 - 6
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisDefaultParameterHandler.java

@@ -156,10 +156,11 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
     /**
      * 填充主键
      *
-     * @param tableInfo       数据库表反射信息
-     * @param parameterObject 插入数据库对象
+     * @param tableInfo  数据库表反射信息
+     * @param metaObject 元数据对象
+     * @param entity     实体信息
      */
-    protected static void populateKeys(TableInfo tableInfo, MetaObject metaObject, Object parameterObject) {
+    protected static void populateKeys(TableInfo tableInfo, MetaObject metaObject, Object entity) {
         final IdType idType = tableInfo.getIdType();
         final String keyProperty = tableInfo.getKeyProperty();
         if (StringUtils.isNotBlank(keyProperty) && null != idType && idType.getKey() >= 3) {
@@ -168,12 +169,12 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
             if (StringUtils.checkValNull(idValue)) {
                 if (idType.getKey() == IdType.ASSIGN_ID.getKey()) {
                     if (Number.class.isAssignableFrom(tableInfo.getKeyType())) {
-                        metaObject.setValue(keyProperty, identifierGenerator.nextId(parameterObject));
+                        metaObject.setValue(keyProperty, identifierGenerator.nextId(entity));
                     } else {
-                        metaObject.setValue(keyProperty, identifierGenerator.nextId(parameterObject).toString());
+                        metaObject.setValue(keyProperty, identifierGenerator.nextId(entity).toString());
                     }
                 } else if (idType.getKey() == IdType.ASSIGN_UUID.getKey()) {
-                    metaObject.setValue(keyProperty, identifierGenerator.nextUUID(parameterObject));
+                    metaObject.setValue(keyProperty, identifierGenerator.nextUUID(entity));
                 }
             }
         }

+ 21 - 35
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/PaginationInterceptor.java

@@ -15,34 +15,6 @@
  */
 package com.baomidou.mybatisplus.extension.plugins;
 
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.stream.Collectors;
-
-import org.apache.ibatis.executor.statement.StatementHandler;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-import org.apache.ibatis.mapping.BoundSql;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.ParameterMapping;
-import org.apache.ibatis.mapping.SqlCommandType;
-import org.apache.ibatis.mapping.StatementType;
-import org.apache.ibatis.plugin.Interceptor;
-import org.apache.ibatis.plugin.Intercepts;
-import org.apache.ibatis.plugin.Invocation;
-import org.apache.ibatis.plugin.Plugin;
-import org.apache.ibatis.plugin.Signature;
-import org.apache.ibatis.reflection.MetaObject;
-import org.apache.ibatis.reflection.SystemMetaObject;
-import org.apache.ibatis.scripting.defaults.DefaultParameterHandler;
-import org.apache.ibatis.session.Configuration;
-import org.apache.ibatis.session.RowBounds;
-
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.core.MybatisDefaultParameterHandler;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -58,17 +30,31 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.DialectFactory;
 import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
 import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
 import com.baomidou.mybatisplus.extension.toolkit.SqlParserUtils;
-
 import lombok.Setter;
 import lombok.experimental.Accessors;
 import net.sf.jsqlparser.JSQLParserException;
 import net.sf.jsqlparser.parser.CCJSqlParserUtil;
 import net.sf.jsqlparser.schema.Column;
-import net.sf.jsqlparser.statement.select.OrderByElement;
-import net.sf.jsqlparser.statement.select.PlainSelect;
-import net.sf.jsqlparser.statement.select.Select;
-import net.sf.jsqlparser.statement.select.SetOperationList;
-import net.sf.jsqlparser.statement.select.WithItem;
+import net.sf.jsqlparser.statement.select.*;
+import org.apache.ibatis.executor.statement.StatementHandler;
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+import org.apache.ibatis.mapping.*;
+import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.SystemMetaObject;
+import org.apache.ibatis.scripting.defaults.DefaultParameterHandler;
+import org.apache.ibatis.session.Configuration;
+import org.apache.ibatis.session.RowBounds;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.stream.Collectors;
 
 /**
  * 分页拦截器
@@ -219,7 +205,7 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
         }
 
         String buildSql = concatOrderBy(originalSql, page);
-        DialectModel model = DialectFactory.buildPaginationSql(page, buildSql, dbType, dialectClazz, connection.getMetaData().getJDBCMajorVersion());
+        DialectModel model = DialectFactory.buildPaginationSql(page, buildSql, dbType, dialectClazz);
         Configuration configuration = mappedStatement.getConfiguration();
         List<ParameterMapping> mappings = new ArrayList<>(boundSql.getParameterMappings());
         Map<String, Object> additionalParameters = (Map<String, Object>) metaObject.getValue("delegate.boundSql.additionalParameters");

+ 8 - 14
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/DialectFactory.java

@@ -15,11 +15,6 @@
  */
 package com.baomidou.mybatisplus.extension.plugins.pagination;
 
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.ibatis.session.RowBounds;
-
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
@@ -27,6 +22,10 @@ import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
 import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
+import org.apache.ibatis.session.RowBounds;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * 分页方言工厂类
@@ -49,12 +48,11 @@ public class DialectFactory {
      * @param buildSql     编译 SQL
      * @param dbType       数据类型
      * @param dialectClazz 数据库方言
-     * @param majorVersion 驱动major版本
      * @return 分页模型
      */
-    public static DialectModel buildPaginationSql(IPage<?> page, String buildSql, DbType dbType, String dialectClazz, int majorVersion) {
+    public static DialectModel buildPaginationSql(IPage<?> page, String buildSql, DbType dbType, String dialectClazz) {
         // fix #196
-        return getDialect(dbType, dialectClazz, majorVersion).buildPaginationSql(buildSql, page.offset(), page.getSize());
+        return getDialect(dbType, dialectClazz).buildPaginationSql(buildSql, page.offset(), page.getSize());
     }
 
     /**
@@ -64,14 +62,10 @@ public class DialectFactory {
      * @param dialectClazz 自定义方言实现类
      * @return ignore
      */
-    private static IDialect getDialect(final DbType dbType, String dialectClazz, int majorVersion) {
+    private static IDialect getDialect(DbType dbType, String dialectClazz) {
         return DIALECT_CACHE.computeIfAbsent(dbType.getDb(), key -> {
             IDialect dialect = null;
-            DbType dbTypeTmp = dbType;
-            if (dbTypeTmp == DbType.ORACLE && majorVersion > 11) {
-                dbTypeTmp = DbType.ORACLE_12C;
-            }
-            String dialectClassName = StringUtils.isBlank(dialectClazz) ? dbTypeTmp.getDialect() : dialectClazz;
+            String dialectClassName = StringUtils.isBlank(dialectClazz) ? dbType.getDialect() : dialectClazz;
             try {
                 Class<?> clazz = Class.forName(dialectClassName);
                 if (IDialect.class.isAssignableFrom(clazz)) {