Jelajahi Sumber

基础Mapper优化,现可自定义父类Mapper构造自己需要的方法

Caratacus 6 tahun lalu
induk
melakukan
f3de2fc101

+ 1 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisMapperAnnotationBuilder.java

@@ -91,7 +91,6 @@ import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.TypeHandler;
 import org.apache.ibatis.type.UnknownTypeHandler;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.override.PageMapperMethod;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
@@ -145,7 +144,7 @@ public class MybatisMapperAnnotationBuilder extends MapperAnnotationBuilder {
             parseCacheRef();
             Method[] methods = type.getMethods();
             // TODO 注入 CURD 动态 SQL (应该在注解之前注入)
-            if (BaseMapper.class.isAssignableFrom(type)) {
+            if (GlobalConfigUtils.getSuperMapperClass(configuration).isAssignableFrom(type)) {
                 GlobalConfigUtils.getSqlInjector(configuration).inspectInject(assistant, type);
             }
             for (Method method : methods) {

+ 12 - 5
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/config/GlobalConfig.java

@@ -15,22 +15,25 @@
  */
 package com.baomidou.mybatisplus.core.config;
 
+import java.io.Serializable;
+import java.util.Set;
+import java.util.concurrent.ConcurrentSkipListSet;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+
 import lombok.AccessLevel;
 import lombok.Data;
 import lombok.Setter;
 import lombok.experimental.Accessors;
-import org.apache.ibatis.session.SqlSessionFactory;
-
-import java.io.Serializable;
-import java.util.Set;
-import java.util.concurrent.ConcurrentSkipListSet;
 
 /**
  * <p>
@@ -73,6 +76,10 @@ public class GlobalConfig implements Serializable {
      * SQL注入器
      */
     private ISqlInjector sqlInjector;
+    /**
+     * Mapper父类
+     */
+    private Class superMapperClass = BaseMapper.class;
     /**
      * 缓存当前Configuration的SqlSessionFactory
      */

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

@@ -16,6 +16,15 @@
  */
 package com.baomidou.mybatisplus.core.toolkit;
 
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+import org.apache.ibatis.session.Configuration;
+import org.apache.ibatis.session.SqlSessionFactory;
+
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
@@ -24,14 +33,6 @@ import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-import org.apache.ibatis.session.Configuration;
-import org.apache.ibatis.session.SqlSessionFactory;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * <p>
@@ -155,6 +156,10 @@ public class GlobalConfigUtils {
         return getGlobalConfig(configuration).getMetaObjectHandler();
     }
 
+    public static Class getSuperMapperClass(Configuration configuration) {
+        return getGlobalConfig(configuration).getSuperMapperClass();
+    }
+
     public static boolean isRefresh(Configuration configuration) {
         return getGlobalConfig(configuration).isRefresh();
     }