批量操作在实际开发中也应用非常多,例如批量下发优惠券、批量添加用户等。

以MyBatis为例,通常实现批量操作,有这么几种方式?

第一,单条插入sql语句,进行for循环遍历,基准条件是根据前端传过的数组长度而定,如果传了四个参数过来,也就是长度为4,代表遍历4次(也就是执行四次插入),这种方式不太建议采用;

第二、编写相关mapper
关于这一点不再赘述,,也参考我的这篇文章SSM框架之批量增加示例(同步请求jsp视图解析)
其主要使用的就是MyBatis的动态sql;

换做MyBatis-Plus,就不必要编写批量新增相关的sql以及mapper(可以理解为数据访问接口),因为MyBatis-Plus已经封装好了,你只需按照对应的规则进行调用即可。

以下面这段路由层代码为例,示例如下:

 @PostMapping("/betchAddUserGroup")
@ApiOperation(value = "批量添加用户到对应的分组", notes = "批量添加用户到对应的分组")
public JSONObject betchAddUserGroup(@RequestParam String[] userIds, @RequestParam String groupId) { JSONObject returnJson = new JSONObject(); ArrayList<UserGroup> list = new ArrayList<UserGroup>(); for (String userId : userIds) {
Console.log("userId:" + userId); UserGroup userGroup = new UserGroup();
userGroup.setGroupId(Integer.parseInt(groupId));
userGroup.setUserId(Integer.parseInt(userId));
list.add(userGroup); } boolean isAddUserGroup = userGroupService.insertBatch(list); if (isAddUserGroup) {
returnJson.put(ResponseUtils.CODE, ResponseUtils.SUCCESS_CODE);
returnJson.put(ResponseUtils.MSG, ResponseUtils.SUCCEESS_MSG);
} else {
returnJson.put(ResponseUtils.CODE, ResponseUtils.ERROR_CODE);
returnJson.put(ResponseUtils.MSG, ResponseUtils.ERROR_MSG);
} return returnJson; }

这里我使用的是insertBetch,关于MyBatis-Plus批量添加或修改相关的API,如图:

MP实战系列(十九)之批量新增的更多相关文章

  1. MP实战系列(十四)之分页使用

    MyBatis Plus的分页,有插件式的,也有其自带了,插件需要配置,说麻烦也不是特别麻烦,不过觉得现有的MyBatis Plus足以解决,就懒得配置插件了. MyBatis Plus的资料不算是太 ...

  2. MP实战系列(十二)之封装方法详解(续二)

    继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...

  3. MP实战系列(十)之SpringMVC集成SpringFox+Swagger2

    该示例基于之前的实战系列,如果公司框架是使用JDK7以上及其Spring+MyBatis+SpringMVC/Spring+MyBatis Plus+SpringMVC可直接参考该实例. 不过建议最好 ...

  4. MP实战系列(十八)之XML文件热加载

    你还在为每次修改XML文件中的SQL重新启动服务器或者是等待几分钟而烦恼吗? 配置了热加载即可解决你的这个问题. 这就是XML文件热加载的目的,减少等待时间成本,提高开发效率. SSM框架配置(Spr ...

  5. MP实战系列(十五)之执行分析插件

    SQL 执行分析拦截器[ 目前只支持 MYSQL-5.6.3 以上版本 ],作用是分析 处理 DELETE UPDATE 语句, 防止小白或者恶意 delete update 全表操作! 这里我引用M ...

  6. MP实战系列(十六)之性能分析插件

    性能分析拦截器,用于输出每条 SQL 语句及其执行时间. 虽然使用阿里的Druid连接池可以完成这个目的,但是,我们一般认为,目前的组件能够达到这个目的,尽量使用目前的组件,因为修改配置和引入第三方库 ...

  7. Java并发编程原理与实战三十九:JDK8新增锁StampedLock详解

    1.StampedLock是做什么的? ----->它是ReentrantReadWriteLock 的增强版,是为了解决ReentrantReadWriteLock的一些不足.   2.Ree ...

  8. MP实战系列(九)之集成Shiro

    下面示例是在之前的基础上进行的,大家如果有什么不明白的可以参考MP实战系列的前八章 当然,同时也可以参考MyBatis Plus官方教程 建议如果参考如下教程,使用的技术为spring+mybatis ...

  9. MP实战系列(七)之集成springboot

    springboot是现在比较流行的微服使用的框架,springboot本质上就是将spring+springmvc+mybatis零配置化,基本上springboot的默认配置符合我们的开发.当然有 ...

随机推荐

  1. Java 8 New Features

    What's New in JDK 8 https://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html Java Pla ...

  2. Spring Boot 企业级应用开发实战 刘伟东-2018年3月第一版

    Spring会自动搜索某些路径下的Java类 并将这些类注册微Bean实例,这样就省去了所有Bean都配置在XML的麻烦 Spring会适当地将显示指定路径下的的类全部注册微Spring Bean . ...

  3. Node.js 中 exports 和 module.exports 的区别

    每一个模块中都有一个 module 对象, module 对象中有一个 exports 对象 我们可以把需要导出的成员都放到 module.exports 这个接口对象中,也就是 module.exp ...

  4. Python - 实现矩阵转置

    有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10 ...

  5. JavaScript 之 基本包装类型

    基本包装类型 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String/Number/Boolean.  下面先看一段代码: var s1 = "Hello ...

  6. IDEA编码时卡顿问题

    当代码行数超过2000行,甚至更多时会出现编码时卡顿到无法编译的情况,解决方法如下: 方法1:修改IDEA配置参数 找到D:\ideaIU-2019.1.1.win\bin\idea64.exe.vm ...

  7. zabbix3.4配置客户端配置

    上篇文章已经搭建好了zabbix_sever端,现在需要在192.168.200.200机器上配置监控项. 1.yum -y install zabbix zabbix-agent 2.配置zabbi ...

  8. SQL注入基础

    注入点的判断: 首先判断该注入点是怎么闭合的,常用的是','),')),",再利用and 1=2,and 1=1判断闭合是否正确 sql注入常用语句: 普通语句:schema_name——数 ...

  9. LNMP搭建后html访问正常php报404错误解决办法

    环境:CentOS7.7.3.10.0-1062.el7.x86_64.nginx1.16.1 .php7.3.10 问题:nginx能解析静态文件但是不能解析php动态文件,返回404文件未发现错误 ...

  10. JVM垃圾收集算法之清除算法

    最近看了一些大佬的博文,文中提到说:学习知识不能一味的死学滥学,在学之前要明白为什么要学这个知识,在实际的应用中怎么运用这个知识.我觉得说的很对,很多时候我学习确实是了解了这是什么原理,但是要说到实际 ...