欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > spriboot+mybatis-plus[3.5.16]+mybatis-plus-core[3.5.7]实现批量插入

spriboot+mybatis-plus[3.5.16]+mybatis-plus-core[3.5.7]实现批量插入

2024/10/25 10:21:46 来源:https://blog.csdn.net/azlnhaha/article/details/142337386  浏览:    关键词:spriboot+mybatis-plus[3.5.16]+mybatis-plus-core[3.5.7]实现批量插入

引入包

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.5.7</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions>
</dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.5.7</version>
</dependency><dependency><artifactId>mybatis</artifactId><groupId>org.mybatis</groupId><version>3.5.16</version>
</dependency>

MyBatis-Plus提供的InsertBatchSomeColumn方法(推荐)

扩展这个InsertBatchSomeColumn方法

package io.jiefang.common.config;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;public class EasySqlInjector extends DefaultSqlInjector {@Overridepublic List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {// 注意:此SQL注入器继承了DefaultSqlInjector(默认注入器),调用了DefaultSqlInjector的getMethodList方法,保留了mybatis-plus的自带方法List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));System.out.println("扩展的getMethodList方法被框架调用了");return methodList;}
}

扩展的方法注入bean容器


package io.jiefang.common.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import io.jiefang.common.interceptor.DataFilterInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** mybatis-plus配置** @since 1.0.0*/
@Configuration
public class MybatisPlusConfig {@Beanpublic  EasySqlInjector sqlInjector(){return new EasySqlInjector();}@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();// 数据权限mybatisPlusInterceptor.addInnerInterceptor((InnerInterceptor) new DataFilterInterceptor());// 分页插件mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());// 乐观锁mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());// 防止全表更新与删除mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());return mybatisPlusInterceptor;}}

创建一个Mapper去实现我们的扩展的

package io.jiefang.common.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.executor.BatchResult;
import java.util.Collection;
import java.util.List;
/*** 基础Dao*/
public interface BaseDao<T> extends BaseMapper<T> {/*** 批量插入 仅适用于mysql** @param entityList 实体列表* @return 影响行数*/Integer insertBatchSomeColumn(Collection<T> entityList);
}

业务层

@Override
public Long add5() {long start = System.currentTimeMillis();List<User> userList= new ArrayList<>();User user ;for (int i = 0; i < 50; i++) {user = new User();user.setUsername("name"+i);user.setPassword("password"+i);userList.add(user);}userMapper.insertBatchSomeColumn(userList);long end = System.currentTimeMillis();System.out.println("耗时:"+( end - start ) + "ms");return (end-start);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com