mybatis-plus 批量添加

发布时间:2024-10-28 17:01

mybatis-plus 当前我用的最新版本


    com.baomidou
    mybatis-plus-boot-starter
    3.5.1

找到这里我不用多说了,mybatis-plus源码的批量插入和修改是通过for循环转化为多条的单条SQL循环进行插入和修改,所以该方法是SQL拼接成一条SQL传入数据库

批量插入:

package com.guide.common.mybatis.mapper;

import java.util.List;

/**
 * @author 
 * @version 1.0
 * @date 2022/5/6 10:34
 */
public interface SpiceBaseMapper {
    /**
     * 批量插入
     * {@link com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn}
     *
     * @param entityList 要插入的数据
     * @return 成功插入的数据条数
     */
    int insertBatchSomeColumn(List entityList);

}
package com.guide.common.mybatis.mapper;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.extension.injector.methods.AlwaysUpdateSomeColumnById;
import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author 
 * @version 1.0
 * @date 2022/5/6 10:28
 */
@Component
public class SpiceSqlInjector extends DefaultSqlInjector {

    /**
     * 如果只需增加方法,保留mybatis plus自带方法,
     * 可以先获取super.getMethodList(),再添加add
     */
    @Override
    public List getMethodList(Class mapperClass) {
        // 注意:此SQL注入器继承了DefaultSqlInjector(默认注入器),调用了DefaultSqlInjector的getMethodList方法,保留了mybatis-plus的自带方法
        List methodList = super.getMethodList(mapperClass);
        // 注入InsertBatchSomeColumn
        // 在!t.isLogicDelete()表示不要逻辑删除字段,!\"update_time\".equals(t.getColumn())表示不要字段名为 update_time 的字段,不对进行操作
        // methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete() && !\"update_time\".equals(t.getColumn())));
        // 要逻辑删除 t.isLogicDelete() 默认不要
        methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete()));
        return methodList;
    }
}

记住Java是可以接口多继承的

\"mybatis-plus

\"\"

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号