From 4a980b65973bfedbe4a89e8e9d431d99584b8c0b Mon Sep 17 00:00:00 2001 From: chuhang <891580081@qq.com> Date: Fri, 18 Jun 2021 15:45:45 +0800 Subject: [PATCH] feat(uboot-core): mybatis-plus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增Mysql Sql注入器以解决mybatis-plus中saveBatch方法无法批量插入Bug --- .../ebtp/core/config/MybatisPlusConfig.java | 9 ++++++++ .../mall/ebtp/core/injector/MyBaseMapper.java | 23 +++++++++++++++++++ .../ebtp/core/injector/MySqlInjector.java | 23 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MyBaseMapper.java create mode 100644 uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MySqlInjector.java diff --git a/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/config/MybatisPlusConfig.java b/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/config/MybatisPlusConfig.java index dfe59df..1ecde12 100644 --- a/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/config/MybatisPlusConfig.java +++ b/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/config/MybatisPlusConfig.java @@ -1,8 +1,13 @@ package com.chinaunicom.mall.ebtp.core.config; +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; +import com.chinaunicom.mall.ebtp.core.injector.MySqlInjector; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -14,6 +19,10 @@ import org.springframework.context.annotation.Configuration; //@MapperScan(basePackages = "com.chinaunicom.mall.ebtp.**.dao") public class MybatisPlusConfig { + @Bean + public MySqlInjector sqlInjector() { + return new MySqlInjector(); + } /** diff --git a/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MyBaseMapper.java b/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MyBaseMapper.java new file mode 100644 index 0000000..6a49f53 --- /dev/null +++ b/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MyBaseMapper.java @@ -0,0 +1,23 @@ +package com.chinaunicom.mall.ebtp.core.injector; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * @author K + * @since 2019/7/9 + */ +public interface MyBaseMapper extends BaseMapper { + + /** + * 批量插入 + * + * @param entityList 数据集合 + * @return int + * @author dino + * @date 2021/6/18 15:40 + */ + int insertBatchSomeColumn(List entityList); + +} diff --git a/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MySqlInjector.java b/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MySqlInjector.java new file mode 100644 index 0000000..9e52afa --- /dev/null +++ b/uboot-core/src/main/java/com/chinaunicom/mall/ebtp/core/injector/MySqlInjector.java @@ -0,0 +1,23 @@ +package com.chinaunicom.mall.ebtp.core.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.extension.injector.methods.InsertBatchSomeColumn; + +import java.util.List; + +/** + * 自定义Sql注入 + * + * @author nieqiurong 2018/8/11 20:23. + */ +public class MySqlInjector extends DefaultSqlInjector { + + @Override + public List getMethodList(Class mapperClass) { + List methodList = super.getMethodList(mapperClass); + methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE)); + return methodList; + } +}