miemie 5 년 전
부모
커밋
040c1c2b9c

+ 4 - 2
mybatis-plus/build.gradle

@@ -6,14 +6,16 @@ dependencies {
     testImplementation "${lib.'javax.servlet-api'}"
     testImplementation "${lib.'javax.servlet-api'}"
 
 
     testImplementation "${lib.'spring-test'}"
     testImplementation "${lib.'spring-test'}"
-    testImplementation "${lib.fastjson}"
+
+    testImplementation "${lib."jackson"}"
+    testImplementation "${lib."fastjson"}"
+    testImplementation "${lib."gson"}"
 
 
     testImplementation "${lib.h2}"
     testImplementation "${lib.h2}"
     testImplementation "${lib.sqlserver}"
     testImplementation "${lib.sqlserver}"
     testImplementation "${lib.postgresql}"
     testImplementation "${lib.postgresql}"
     testImplementation lib.oracle as ConfigurableFileTree
     testImplementation lib.oracle as ConfigurableFileTree
     testImplementation "${lib.mysql}"
     testImplementation "${lib.mysql}"
-    testImplementation "${lib.jackson}"
     testImplementation "${lib.'mybatis-ehcache'}"
     testImplementation "${lib.'mybatis-ehcache'}"
     testImplementation "${lib.'mybatis-redis'}"
     testImplementation "${lib.'mybatis-redis'}"
     testImplementation "${lib.'spring-context-support'}"
     testImplementation "${lib.'spring-context-support'}"

+ 5 - 4
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/BaseDbTest.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.apache.ibatis.builder.xml.XMLMapperBuilder;
 import org.apache.ibatis.builder.xml.XMLMapperBuilder;
+import org.apache.ibatis.io.Resources;
 import org.apache.ibatis.logging.slf4j.Slf4jImpl;
 import org.apache.ibatis.logging.slf4j.Slf4jImpl;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.plugin.Interceptor;
 import org.apache.ibatis.plugin.Interceptor;
@@ -17,12 +18,12 @@ import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
 import org.apache.ibatis.type.TypeReference;
 import org.apache.ibatis.type.TypeReference;
 import org.h2.Driver;
 import org.h2.Driver;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.datasource.SimpleDriverDataSource;
 import org.springframework.jdbc.datasource.SimpleDriverDataSource;
 
 
 import javax.sql.DataSource;
 import javax.sql.DataSource;
 import java.io.IOException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 import java.util.List;
 import java.util.function.Consumer;
 import java.util.function.Consumer;
 
 
@@ -64,10 +65,10 @@ public abstract class BaseDbTest<T> extends TypeReference<T> {
         GlobalConfigUtils.setGlobalConfig(configuration, globalConfig);
         GlobalConfigUtils.setGlobalConfig(configuration, globalConfig);
         configuration.setLogImpl(Slf4jImpl.class);
         configuration.setLogImpl(Slf4jImpl.class);
         if (StringUtils.isNotBlank(mapperXml)) {
         if (StringUtils.isNotBlank(mapperXml)) {
-            ClassPathResource resource = new ClassPathResource(mapperXml);
             try {
             try {
-                XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(resource.getInputStream(),
-                    configuration, resource.toString(), configuration.getSqlFragments());
+                InputStream inputStream = Resources.getResourceAsStream(mapperXml);
+                XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(inputStream,
+                    configuration, mapperXml, configuration.getSqlFragments());
                 xmlMapperBuilder.parse();
                 xmlMapperBuilder.parse();
             } catch (IOException e) {
             } catch (IOException e) {
                 throw ExceptionUtils.mpe(e);
                 throw ExceptionUtils.mpe(e);

+ 37 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/autoresultmap/AutoResultMapTest.java

@@ -0,0 +1,37 @@
+package com.baomidou.mybatisplus.test.autoresultmap;
+
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+public class AutoResultMapTest extends BaseDbTest<EntityMapper> {
+
+    @Test
+    void test() {
+        doTestAutoCommit(m -> m.insert(new Entity().setGg(new Entity.Gg("老王"))));
+        doTest(m -> {
+            Entity entity = m.selectOne(null);
+            assertThat(entity).as("插入正常").isNotNull();
+            assertThat(entity.getGg()).as("typeHandler正常").isNotNull();
+            assertThat(entity.getGg().getName()).as("是老王").isEqualTo("老王");
+        });
+    }
+
+    @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" +
+                "gg VARCHAR(255) NULL DEFAULT NULL,\n" +
+                "PRIMARY KEY (id)" +
+                ")");
+    }
+}

+ 34 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/autoresultmap/Entity.java

@@ -0,0 +1,34 @@
+package com.baomidou.mybatisplus.test.autoresultmap;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.GsonTypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+@Data
+@Accessors(chain = true)
+@TableName(autoResultMap = true)
+public class Entity implements Serializable {
+    private static final long serialVersionUID = 6962439201546719734L;
+
+    private Long id;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Gg gg;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Gg {
+        private String name;
+    }
+}

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

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

+ 37 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/resultmap/Entity.java

@@ -0,0 +1,37 @@
+package com.baomidou.mybatisplus.test.resultmap;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.GsonTypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+@Data
+@Accessors(chain = true)
+@TableName(resultMap = "resultMap")
+public class Entity implements Serializable {
+    private static final long serialVersionUID = 6962439201546719734L;
+
+    private Long id;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Gg gg1;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Gg gg2;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Gg {
+        private String name;
+    }
+}

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

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

+ 48 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/resultmap/ResultMapTest.java

@@ -0,0 +1,48 @@
+package com.baomidou.mybatisplus.test.resultmap;
+
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * @author miemie
+ * @since 2020-06-23
+ */
+public class ResultMapTest extends BaseDbTest<EntityMapper> {
+
+    @Test
+    void test() {
+        doTestAutoCommit(m -> m.insert(new Entity().setGg1(new Entity.Gg("老王"))
+            .setGg2(new Entity.Gg("老李"))));
+
+        doTest(m -> {
+            Entity entity = m.selectOne(null);
+            assertThat(entity).as("插入正常").isNotNull();
+            assertThat(entity.getGg1()).as("typeHandler正常").isNotNull();
+            assertThat(entity.getGg1().getName()).as("是老王").isEqualTo("老王");
+
+            assertThat(entity.getGg2()).as("typeHandler正常").isNotNull();
+            assertThat(entity.getGg2().getName()).as("是老李").isEqualTo("老李");
+        });
+    }
+
+    @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" +
+                "gg1 VARCHAR(255) NULL DEFAULT NULL,\n" +
+                "gg2 VARCHAR(255) NULL DEFAULT NULL,\n" +
+                "PRIMARY KEY (id)" +
+                ")");
+    }
+
+    @Override
+    protected String mapperXml() {
+        return "com/baomidou/mybatisplus/test/resultmap/entityMapper.xml";
+    }
+}

+ 14 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/resultmap/entityMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.baomidou.mybatisplus.test.resultmap.EntityMapper">
+
+    <resultMap id="baseResult" type="com.baomidou.mybatisplus.test.resultmap.Entity">
+        <id column="id" property="id"/>
+        <result column="gg1" property="gg1" typeHandler="com.baomidou.mybatisplus.extension.handlers.GsonTypeHandler"/>
+    </resultMap>
+
+    <resultMap id="resultMap" type="com.baomidou.mybatisplus.test.resultmap.Entity"
+               extends="baseResult">
+        <result column="gg2" property="gg2" typeHandler="com.baomidou.mybatisplus.extension.handlers.GsonTypeHandler"/>
+    </resultMap>
+</mapper>