聂秋秋 5 tahun lalu
induk
melakukan
6e4835c50f

+ 37 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/FillPerformanceTest.java

@@ -0,0 +1,37 @@
+package com.baomidou.mybatisplus.test.h2;
+
+import com.baomidou.mybatisplus.test.h2.fillperformance.model.PerformanceModel;
+import com.baomidou.mybatisplus.test.h2.fillperformance.service.IPerformanceModelService;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration(locations = {"classpath:h2/spring-fill-performance-h2.xml"})
+class FillPerformanceTest {
+
+    @Autowired
+    private IPerformanceModelService performanceModelService;
+
+    @Test
+    void test(){
+        List<PerformanceModel> list = new ArrayList<>();
+        for (int i = 0; i < 5000; i++) {
+            list.add(new PerformanceModel());
+        }
+        System.out.println("-------------------------");
+        long start = System.currentTimeMillis();
+        performanceModelService.saveBatch(list);
+        long end = System.currentTimeMillis();
+        System.out.println(end - start);
+        System.out.println("-------------------------");
+    }
+}

+ 98 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/fillperformance/FillPerformanceConfig.java

@@ -0,0 +1,98 @@
+package com.baomidou.mybatisplus.test.h2.fillperformance;
+
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.core.handlers.StrictFill;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.type.EnumOrdinalTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+import java.util.Arrays;
+
+@Configuration
+@MapperScan("com.baomidou.mybatisplus.test.h2.fillperformance.mapper")
+public class FillPerformanceConfig {
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
+        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
+        sqlSessionFactory.setDataSource(dataSource);
+        MybatisConfiguration configuration = new MybatisConfiguration();
+        configuration.setJdbcTypeForNull(JdbcType.NULL);
+        configuration.setMapUnderscoreToCamelCase(true);
+        configuration.setDefaultExecutorType(ExecutorType.REUSE);
+        configuration.setDefaultEnumTypeHandler(EnumOrdinalTypeHandler.class);
+        sqlSessionFactory.setConfiguration(configuration);
+        sqlSessionFactory.setGlobalConfig(new GlobalConfig().setMetaObjectHandler(metaObjectHandler()));
+        PaginationInterceptor pagination = new PaginationInterceptor();
+        sqlSessionFactory.setPlugins(pagination);
+        return sqlSessionFactory.getObject();
+    }
+
+    @Bean
+    public MetaObjectHandler metaObjectHandler() {
+        return new MetaObjectHandler() {
+            @Override
+            public void insertFill(MetaObject metaObject) {
+//                strictInsertFill(metaObject,"c",String.class,"1234567890");
+//                strictInsertFill(metaObject,"d",String.class,"1234567890");
+//                strictInsertFill(metaObject,"e",String.class,"1234567890");
+//                strictInsertFill(metaObject,"f",String.class,"1234567890");
+//                strictInsertFill(metaObject,"g",String.class,"1234567890");
+//                strictInsertFill(metaObject,"h",String.class,"1234567890");
+//                strictInsertFill(metaObject,"i",String.class,"1234567890");
+//                strictInsertFill(metaObject,"j",String.class,"1234567890");
+//                strictInsertFill(metaObject,"l",String.class,"1234567890");
+//                strictInsertFill(metaObject,"m",String.class,"1234567890");
+                setFieldValByName("c","1234567890",metaObject);
+                setFieldValByName("d","1234567890",metaObject);
+                setFieldValByName("e","1234567890",metaObject);
+                setFieldValByName("f","1234567890",metaObject);
+                setFieldValByName("g","1234567890",metaObject);
+                setFieldValByName("h","1234567890",metaObject);
+                setFieldValByName("i","1234567890",metaObject);
+                setFieldValByName("j","1234567890",metaObject);
+                setFieldValByName("l","1234567890",metaObject);
+                setFieldValByName("m","1234567890",metaObject);
+//                setInsertFieldValByName("c","1234567890",metaObject);
+//                setInsertFieldValByName("d","1234567890",metaObject);
+//                setInsertFieldValByName("e","1234567890",metaObject);
+//                setInsertFieldValByName("f","1234567890",metaObject);
+//                setInsertFieldValByName("g","1234567890",metaObject);
+//                setInsertFieldValByName("h","1234567890",metaObject);
+//                setInsertFieldValByName("i","1234567890",metaObject);
+//                setInsertFieldValByName("j","1234567890",metaObject);
+//                setInsertFieldValByName("l","1234567890",metaObject);
+//                setInsertFieldValByName("m","1234567890",metaObject);
+
+//                strictInsertFill(findTableInfo(metaObject),metaObject, Arrays.asList(
+//                    StrictFill.of("c",String.class,"1234567890"),
+//                    StrictFill.of("d",String.class,"1234567890"),
+//                    StrictFill.of("e",String.class,"1234567890"),
+//                    StrictFill.of("f",String.class,"1234567890"),
+//                    StrictFill.of("g",String.class,"1234567890"),
+//                    StrictFill.of("h",String.class,"1234567890"),
+//                    StrictFill.of("i",String.class,"1234567890"),
+//                    StrictFill.of("j",String.class,"1234567890"),
+//                    StrictFill.of("l",String.class,"1234567890"),
+//                    StrictFill.of("m",String.class,"1234567890")
+//                ));
+            }
+
+            @Override
+            public void updateFill(MetaObject metaObject) {
+
+            }
+        };
+    }
+
+}

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/fillperformance/mapper/PerformanceModelMapper.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.h2.fillperformance.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.h2.fillperformance.model.PerformanceModel;
+
+public interface PerformanceModelMapper extends BaseMapper<PerformanceModel> {
+
+}

+ 36 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/fillperformance/model/PerformanceModel.java

@@ -0,0 +1,36 @@
+package com.baomidou.mybatisplus.test.h2.fillperformance.model;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@TableName(value = "t_fill_performance")
+public class PerformanceModel {
+
+    private Long id;
+    private String a;
+    private String b;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String c;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String d;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String e;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String f;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String g;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String h;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String i;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String j;
+    private String k;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String l;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String m;
+    private String n;
+
+}

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/fillperformance/service/IPerformanceModelService.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.h2.fillperformance.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.test.h2.fillperformance.model.PerformanceModel;
+
+public interface IPerformanceModelService extends IService<PerformanceModel> {
+
+}

+ 12 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/fillperformance/service/impl/PerformanceModelServiceImpl.java

@@ -0,0 +1,12 @@
+package com.baomidou.mybatisplus.test.h2.fillperformance.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.test.h2.fillperformance.mapper.PerformanceModelMapper;
+import com.baomidou.mybatisplus.test.h2.fillperformance.model.PerformanceModel;
+import com.baomidou.mybatisplus.test.h2.fillperformance.service.IPerformanceModelService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PerformanceModelServiceImpl extends ServiceImpl<PerformanceModelMapper, PerformanceModel> implements IPerformanceModelService {
+
+}

+ 1 - 10
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/idgenerator/IdGeneratorConfig.java

@@ -2,14 +2,8 @@ package com.baomidou.mybatisplus.test.h2.idgenerator;
 
 import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.core.incrementer.IdGenerator;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.SqlExplainInterceptor;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
-import org.apache.ibatis.reflection.SystemMetaObject;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.type.EnumOrdinalTypeHandler;
@@ -34,10 +28,7 @@ public class IdGeneratorConfig {
         configuration.setDefaultEnumTypeHandler(EnumOrdinalTypeHandler.class);
         sqlSessionFactory.setConfiguration(configuration);
         PaginationInterceptor pagination = new PaginationInterceptor();
-        SqlExplainInterceptor sqlExplainInterceptor = new SqlExplainInterceptor();
-        sqlSessionFactory.setPlugins(
-            pagination,
-            sqlExplainInterceptor);
+        sqlSessionFactory.setPlugins(pagination);
         sqlSessionFactory.setGlobalConfig(globalConfig);
         return sqlSessionFactory.getObject();
     }

+ 18 - 0
mybatis-plus/src/test/resources/fillperformance/init.ddl.sql

@@ -0,0 +1,18 @@
+CREATE TABLE IF NOT EXISTS  t_fill_performance (
+	id BIGINT(20) NOT NULL,
+	a VARCHAR(30) NULL DEFAULT NULL ,
+	b VARCHAR(30) NULL DEFAULT NULL ,
+	c VARCHAR(30) NULL DEFAULT NULL ,
+	d VARCHAR(30) NULL DEFAULT NULL ,
+	e VARCHAR(30) NULL DEFAULT NULL ,
+	f VARCHAR(30) NULL DEFAULT NULL ,
+	g VARCHAR(30) NULL DEFAULT NULL ,
+	h VARCHAR(30) NULL DEFAULT NULL ,
+	i VARCHAR(30) NULL DEFAULT NULL ,
+	j VARCHAR(30) NULL DEFAULT NULL ,
+	k VARCHAR(30) NULL DEFAULT NULL ,
+	l VARCHAR(30) NULL DEFAULT NULL ,
+	m VARCHAR(30) NULL DEFAULT NULL ,
+	n VARCHAR(30) NULL DEFAULT NULL ,
+	PRIMARY KEY (id)
+);

+ 14 - 0
mybatis-plus/src/test/resources/h2/spring-fill-performance-h2.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns="http://www.springframework.org/schema/beans"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+    <context:component-scan base-package="com.baomidou.mybatisplus.test.h2.fillperformance"/>
+
+    <bean class="com.baomidou.mybatisplus.test.h2.config.DBConfig">
+        <property name="locationPattern" value="classpath:/fillperformance/*.sql"/>
+    </bean>
+
+</beans>