Mybatis Plus 實現批量插入的示例代碼
Mybatis Plus 的 IService 接口中提供瞭批量插入的方法,然而,它的內部實現邏輯竟然是這樣的:
居然是循環單條插入?!逗人玩嘛,好吧,自己動手,豐衣足食。
一. 添加依賴
<!--mybatis plus extension,包含瞭mybatis plus core--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>3.4.0</version> </dependency>
二. 繼承默認方法註入
在 injector 包下新建 EasySqlInjector.java
EasySqlInjector.java
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; /** * @author: jichunyang * @description: 自定義數據方法註入 * @date: 2020/12/18 14:15 **/ public class EasySqlInjector extends DefaultSqlInjector { @Override public List<AbstractMethod> getMethodList(Class<?> mapperClass) { List<AbstractMethod> methodList = super.getMethodList(mapperClass); methodList.add(new InsertBatchSomeColumn()); return methodList; } }
三. 在 MybatisPlusConfig 配置文件中註入 Bean
//開啟事務 @EnableTransactionManagement @Configuration @MapperScan("掃描的mapper包路徑") public class MybatisPlusConfig { //需要註入的Bean @Bean public EasySqlInjector easySqlInjector() { return new EasySqlInjector(); } @Bean("sqlSessionFactory") public SqlSessionFactory sqlSessionFactory() throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean(); // 其他配置項 ...... sqlSessionFactory.setGlobalConfig(globalConfiguration()); return sqlSessionFactory.getObject(); } @Bean public GlobalConfig globalConfiguration() { GlobalConfig conf = new GlobalConfig(); // 自定義的註入需要在這裡進行配置 conf.setSqlInjector(easySqlInjector()); return conf; } }
四. 擴展自帶 BaseMapper
在 mapper 包下新建 EasyBaseMapper 接口,擴展自帶 BaseMapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; public interface EasyBaseMapper<T> extends BaseMapper<T> { /** * 批量插入 僅適用於mysql * @param entityList 實體列表 * @return 影響行數 */ Integer insertBatchSomeColumn(List<T> entityList); }
五. 業務層面實現
修改業務 mapper 接口 UserMapper,繼承剛剛擴展的 EasyBaseMapper
import org.apache.ibatis.annotations.Mapper; /** * @author jichunyang * @description 用戶Mapper */ @Mapper public interface UserMapper extends EasyBaseMapper<User> { }
service實現層的使用
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { @Override @Transactional public void insertUsers(List<User> users) { // 這裡使用瞭自定義的批量插入,baseMapper可以直接使用,不需要聲明 baseMapper.insertBatchSomeColumn(users); } }
IUserService 是定義的業務邏輯接口,和批量插入配置無關;
參考博客:https://www.jb51.net/article/196445.htm
到此這篇關於Mybatis Plus 實現批量插入的示例代碼的文章就介紹到這瞭,更多相關Mybatis Plus批量插入內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- mybatis-plus(insertBatchSomeColumn批量添加方式)
- springBoot集成mybatis 轉換為 mybatis-plus方式
- easycode配置成mybatis-plus模板的實現方法
- mybatisplus添加真正的批量新增、批量更新的實現
- 一文瞭解MyBatis Plus批量數據插入功能