mybatisPlus实现真实批量插入操作 |
您所在的位置:网站首页 › mybatis批量入库 › mybatisPlus实现真实批量插入操作 |
场景:
在实际使用中发现mybaitsPlus的批量插入方法,并没有实现真正的批量插入,而是不断遍历循环插入; 问题:如何实现真实批量插入? 解决:1、方法一: 在数据库连接配置文件中,使用rewriteBatchedStatements=true 2、方法二: 直接采用手写sql的方式: import cn.mindgd.domain.WarehouseDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import java.util.List; public interface WarehouseDetailMapper extends BaseMapper { @Insert("" + "INSERT INTO warehouse_detail(warehouse_record_id,material_id,a_number,b_number)VALUES" + " " + "(#{warehouseDetail.warehouseRecordId},#{warehouseDetail.materialId},#{warehouseDetail.aNumber},#{warehouseDetail.bNumber})" + " " + "")//批量建议手写sql boolean insertBatch(@Param("warehouseDetails") List warehouseDetails); }效率很高 3、方法三: 导入pom依赖: com.baomidou mybatis-plus-extension 3.4.01)创建配置类: import com.example.bootmybatisplus.injector.EasysqlInjector; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * 插件 */ @EnableTransactionManagement @Configuration @MapperScan("com.baomidou.cloud.service.*.mapper*") public class MybatisPlusConfig { //需要注入的Bean @Bean public EasysqlInjector easysqlInjector() { return new EasysqlInjector(); } }2)创建注入器,替代mybatisPlus默认的sql规则,因为mybatisPlus要适应多种数据库,采用默认通用策略,所以mysql针对性的批量操作并没有开启; 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; public class EasysqlInjector extends DefaultSqlInjector { @Override public List getMethodList(Class mapperClass) { List methodList = super.getMethodList(mapperClass); methodList.add(new InsertBatchSomeColumn()); return methodList; } }3)创建通用mapper import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; public interface EasyBaseMapper extends BaseMapper { /** * 批量插入 仅适用于MysqL * @param entityList 实体列表 * @return 影响行数 */ Integer insertBatchSomeColumn(List entityList); }我们自定的mapper类以前是继承BaseMapper,而现在要继承EasyBaseMapper ;如下: |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |