mybatis 扩展 批量插入

mybatis 扩展 批量插入

场景

mybatis plus 中有批量插入的方法 saveBatch, 不过这个最后 还是循环遍历插入,其实还有其他方式, 给 BaseMapper中增加另一个批量插入的方法 insertBatchSomeColumn, 其实 mybatis plus 早就 实现了,只不过没有在 BaseMapper中加入

InsertBatchSomeColumn实现

就是拼接成如 insert into table (c1,c2) values(v1,v2),(v11,v22) 这种SQL

ExtBaseMapper

自定义 ExtBaseMapper

java 复制代码
public interface ExtBaseMapper<T> extends BaseMapper<T> {

    /**
     * 批量插入: insertBatchSomeColumn 名称和 InsertBatchSomeColumn 中 getMethod 方法相同
     * @param list
     */
    void insertBatchSomeColumn(@Param("list") List<T> list);
}

重写 DefaultSqlInjector

java 复制代码
public class ExtSqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
        methodList.add(new InsertBatchSomeColumn());
        return methodList;
    }
}

依赖注入

java 复制代码
@Bean
public ExtSqlInjector extSqlInjector(){
    return new ExtSqlInjector();
}

注意,把 ExtBaseMapper 放在 mapperscan 包下

java 复制代码
public interface UserMapper extends ExtBaseMapper<ReservationDeviceConfigModel> {
}

测试

java 复制代码
public void addBatch() {
    List<UserModel> list = new ArrayList<>();
    for (int i = 0; i < 2; i++) {
        UserModel  m = new UserModel();
        m.setServerUrl("teset"+i);
        list.add(m);
    }
    baseMapper.insertBatchSomeColumn(list);
    System.out.println(JSON.toJSONString(list));
}

结果

bash 复制代码
  INSERT INTO t_reservation_device_config (server_url,create_time,update_time) VALUES   
('teset0',null,null)
 , 
('teset1',null,null)

[{"id":2,"serverUrl":"teset0"},{"id":3,"serverUrl":"teset1"}]

可以发现 批量插入成功,并返回了自增 Id

相关推荐
kkkkk02110614 小时前
微服务学习笔记(黑马商城)
java·spring boot·spring·spring cloud·sentinel·mybatis·java-rabbitmq
夜幽青玄16 小时前
mybatis-plus调用报 org.springframework.dao.DataIntegrityViolationException 错误处理
开发语言·python·mybatis
毕业设计制作和分享1 天前
springboot150基于springboot的贸易行业crm系统
java·vue.js·spring boot·后端·毕业设计·mybatis
SpiderPex1 天前
论MyBatis和JPA权威性
java·mybatis
瑞士卷@2 天前
MyBatis入门到精通(Mybatis学习笔记)
java·数据库·后端·mybatis
optimistic_chen2 天前
【Java EE进阶 --- SpringBoot】Mybatis - plus 操作数据库
数据库·spring boot·笔记·java-ee·mybatis·mybatis-plus
詩句☾⋆᭄南笙2 天前
Mybatis一对一、一对多
java·mybatis·resulttype·resultmap·一对多·一对一
DokiDoki之父2 天前
MyBatis—增删查改操作
java·spring boot·mybatis
DokiDoki之父3 天前
Mybatis—入门 & (配置)SQL提示和日志输出
数据库·sql·mybatis
计算机学姐4 天前
基于微信小程序的垃圾分类管理系统【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis