miemie 5 éve
szülő
commit
7255ec0fba

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

@@ -107,10 +107,7 @@ public class MybatisPlusProperties {
 
     /**
      * TODO 枚举包扫描
-     *
-     * @deprecated 3.3.3 @2020-06-23 初始化entity时会自动把符合条件的枚举处理了
      */
-    @Deprecated
     private String typeEnumsPackage;
 
     /**

+ 0 - 15
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableFieldInfo.java

@@ -17,7 +17,6 @@ package com.baomidou.mybatisplus.core.metadata;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
@@ -165,13 +164,6 @@ public class TableFieldInfo implements Constants {
         this.field = field;
         this.version = field.getAnnotation(Version.class) != null;
         this.property = field.getName();
-        Class<?> fieldType = field.getType();
-        if (fieldType.isEnum() && MybatisEnumTypeHandler.isMpEnums(fieldType)) {
-            TypeHandlerRegistry registry = tableInfo.getConfiguration().getTypeHandlerRegistry();
-            if (registry.getTypeHandler(fieldType) == null) {
-                registry.register(fieldType, MybatisEnumTypeHandler.class);
-            }
-        }
         this.propertyType = reflector.getGetterType(this.property);
         this.isPrimitive = this.propertyType.isPrimitive();
         this.isCharSequence = StringUtils.isCharSequence(this.propertyType);
@@ -255,13 +247,6 @@ public class TableFieldInfo implements Constants {
         this.field = field;
         this.version = field.getAnnotation(Version.class) != null;
         this.property = field.getName();
-        Class<?> fieldType = field.getType();
-        if (fieldType.isEnum() && MybatisEnumTypeHandler.isMpEnums(fieldType)) {
-            TypeHandlerRegistry registry = tableInfo.getConfiguration().getTypeHandlerRegistry();
-            if (registry.getTypeHandler(fieldType) == null) {
-                registry.register(fieldType, MybatisEnumTypeHandler.class);
-            }
-        }
         this.propertyType = reflector.getGetterType(this.property);
         this.isPrimitive = this.propertyType.isPrimitive();
         this.isCharSequence = StringUtils.isCharSequence(this.propertyType);

+ 0 - 3
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/spring/MybatisSqlSessionFactoryBean.java

@@ -141,11 +141,8 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
 
     /**
      * TODO 自定义枚举包
-     *
-     * @deprecated 3.3.3 @2020-06-23 初始化entity时会自动把符合条件的枚举处理了
      */
     @Setter
-    @Deprecated
     private String typeEnumsPackage;
 
     // TODO 自定义全局配置

+ 18 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/BaseDbTest.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.builder.xml.XMLMapperBuilder;
 import org.apache.ibatis.logging.slf4j.Slf4jImpl;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
@@ -42,6 +43,7 @@ public abstract class BaseDbTest<T> extends TypeReference<T> {
         String mapperXml = mapperXml();
         GlobalConfig globalConfig = globalConfig();
         List<Interceptor> interceptors = interceptors();
+        Consumer<Configuration> consumer = consumer();
         mapper = (Class<T>) getRawType();
 
         JdbcTemplate template = new JdbcTemplate(ds);
@@ -75,6 +77,9 @@ public abstract class BaseDbTest<T> extends TypeReference<T> {
         if (CollectionUtils.isNotEmpty(interceptors)) {
             interceptors.forEach(configuration::addInterceptor);
         }
+        if (consumer != null) {
+            consumer.accept(configuration);
+        }
         sqlSessionFactory = builder.build(configuration);
     }
 
@@ -87,12 +92,18 @@ public abstract class BaseDbTest<T> extends TypeReference<T> {
         return dataSource;
     }
 
-    protected SqlSession autoCommitSession() {
-        return sqlSessionFactory.openSession(true);
+    protected SqlSession autoCommitSession(boolean autoCommit) {
+        return sqlSessionFactory.openSession(autoCommit);
+    }
+
+    protected void doTest(Consumer<T> consumer) {
+        try (SqlSession sqlSession = autoCommitSession(false)) {
+            doTest(sqlSession, consumer);
+        }
     }
 
     protected void doTestAutoCommit(Consumer<T> consumer) {
-        try (SqlSession sqlSession = autoCommitSession()) {
+        try (SqlSession sqlSession = autoCommitSession(true)) {
             doTest(sqlSession, consumer);
         }
     }
@@ -121,4 +132,8 @@ public abstract class BaseDbTest<T> extends TypeReference<T> {
     protected GlobalConfig globalConfig() {
         return GlobalConfigUtils.defaults();
     }
+
+    protected Consumer<Configuration> consumer() {
+        return null;
+    }
 }

+ 22 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/enums/Entity.java

@@ -0,0 +1,22 @@
+package com.baomidou.mybatisplus.test.enums;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+@Data
+@Accessors(chain = true)
+public class Entity implements Serializable {
+    private static final long serialVersionUID = 5094767605376915138L;
+
+    private Long id;
+
+    private EnumStr enumStr;
+
+    private EnumInt enumInt;
+}

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/enums/EntityMapper.java

@@ -0,0 +1,10 @@
+package com.baomidou.mybatisplus.test.enums;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+public interface EntityMapper extends BaseMapper<Entity> {
+}

+ 19 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/enums/EnumInt.java

@@ -0,0 +1,19 @@
+package com.baomidou.mybatisplus.test.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+@Getter
+@AllArgsConstructor
+public enum EnumInt {
+    ONE(1),
+    TWO(2);
+
+    @EnumValue
+    private final int value;
+}

+ 19 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/enums/EnumStr.java

@@ -0,0 +1,19 @@
+package com.baomidou.mybatisplus.test.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+@Getter
+@AllArgsConstructor
+public enum EnumStr {
+    ONE("1"),
+    TWO("2");
+
+    @EnumValue
+    private final String value;
+}

+ 51 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/enums/EnumTest.java

@@ -0,0 +1,51 @@
+package com.baomidou.mybatisplus.test.enums;
+
+import com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler;
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.apache.ibatis.session.Configuration;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+public class EnumTest extends BaseDbTest<EntityMapper> {
+
+    @Test
+    void test() {
+        Long id = 1L;
+        doTestAutoCommit(m -> {
+            Entity entity = new Entity().setId(id).setEnumInt(EnumInt.ONE).setEnumStr(EnumStr.TWO);
+            int insert = m.insert(entity);
+            assertThat(insert).as("插入成功").isEqualTo(1);
+        });
+        doTest(m -> {
+            Entity entity = m.selectById(id);
+            assertThat(entity).as("查出刚刚插入的数据").isNotNull();
+            assertThat(entity.getEnumInt()).as("枚举正确").isEqualTo(EnumInt.ONE);
+            assertThat(entity.getEnumStr()).as("枚举正确").isEqualTo(EnumStr.TWO);
+        });
+    }
+
+    @Override
+    protected Consumer<Configuration> consumer() {
+        return i -> i.setDefaultEnumTypeHandler(MybatisEnumTypeHandler.class);
+    }
+
+    @Override
+    protected List<String> tableSql() {
+        return Arrays.asList("drop table if exists entity",
+            "CREATE TABLE IF NOT EXISTS entity (\n" +
+                "id BIGINT(20) NOT NULL,\n" +
+                "enum_int integer NULL DEFAULT NULL,\n" +
+                "enum_str VARCHAR(30) NULL DEFAULT NULL,\n" +
+                "PRIMARY KEY (id)" +
+                ")");
+    }
+}