diff --git a/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomBaseMapper.java b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomBaseMapper.java new file mode 100644 index 000000000..23f69ebbf --- /dev/null +++ b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomBaseMapper.java @@ -0,0 +1,25 @@ +package cn.stylefeng.roses.kernel.db.mp.injector; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * 加了拓展方法的BaseMapper + *

+ * 目前添加自定义InsertBatch方法 + * + * @author fengshuonan + * @date 2022/9/17 14:24 + */ +public interface CustomBaseMapper extends BaseMapper { + + /** + * 批量插入,拼接insert方式,提高效率 + * + * @author fengshuonan + * @date 2022/9/17 14:27 + */ + int insertBatchSomeColumn(List entityList); + +} \ No newline at end of file diff --git a/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomInsertBatchSqlInjector.java b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomInsertBatchSqlInjector.java new file mode 100644 index 000000000..f082aa092 --- /dev/null +++ b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomInsertBatchSqlInjector.java @@ -0,0 +1,27 @@ +package cn.stylefeng.roses.kernel.db.mp.injector; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn; + +import java.util.List; + +/** + * 自定义,针对saveBatch的优化,改为一次拼接多个values插入到库 + * + * @author fengshuonan + * @date 2022/9/17 14:23 + */ +public class CustomInsertBatchSqlInjector extends DefaultSqlInjector { + + @Override + public List getMethodList(Class mapperClass, TableInfo tableInfo) { + List methodList = super.getMethodList(mapperClass, tableInfo); + // 例: 不要指定了 update 填充的字段 + methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE)); + return methodList; + } + +} \ No newline at end of file diff --git a/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java b/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java index 387912e1e..953ed2ff8 100644 --- a/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java +++ b/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java @@ -26,6 +26,7 @@ package cn.stylefeng.roses.kernel.db.starter; import cn.stylefeng.roses.kernel.db.mp.dbid.CustomDatabaseIdProvider; import cn.stylefeng.roses.kernel.db.mp.fieldfill.CustomMetaObjectHandler; +import cn.stylefeng.roses.kernel.db.mp.injector.CustomInsertBatchSqlInjector; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; @@ -108,4 +109,15 @@ public class GunsMyBatisPlusAutoConfiguration { return new CustomDatabaseIdProvider(); } + /** + * 自定义sqlInjector + * + * @author fengshuonan + * @date 2022/9/17 14:28 + */ + @Bean + public CustomInsertBatchSqlInjector customInsertBatchSqlInjector() { + return new CustomInsertBatchSqlInjector(); + } + }