List<ProductSkuVO> productSkuList = new ArrayList<ProductSkuVO>(); //商品sku对象 ProductSkuVO productSkuVO = null; for (int i = 0; i < jsonArray.size(); i++) { json = jsonArray.getJSONObject(i); //商品的sku编号 skuId = json.getString("sku_id"); //商品的购买数量 stockNumStr = json.getString("stock_num"); if(StrUtil.isNotNull(stockNumStr)){ stockNum = new BigDecimal(stockNumStr); } productSkuVO = new ProductSkuVO(); productSkuVO.setSKU_ID(skuId); productSkuVO.setSTOCK_NUM(stockNum); productSkuList.add(productSkuVO); } Map<String,Object> parameter = new HashMap<String, Object>(); parameter.put("parameters", productSkuList); //循环update,回归库存 int count=productSkuService.modifyProductSkuById(parameter); if(count == jsonArray.size()){ jsonResult.put("code", -1); //批量执行成功 }else{ jsonResult.put("code", 1); //批量执行失败 }
public int modifyProductSkuById(Map<String,Object> map){ int i=this.baseDao.update("updateSkuById", map, ProductSkuVO.class); return i; }
<!-- 下单后1个小时 库存回归 --> <update id="updateSkuById" parameterType="map"> UPDATE BIZ_PRODUCT_SKU SET STOCK_NUM = CASE <foreach collection="parameters" item="item"> WHEN SKU_ID = #{item.SKU_ID} THEN STOCK_NUM + #{item.STOCK_NUM} </foreach> END WHERE SKU_ID IN <foreach collection="parameters" item="item" open="(" separator="," close=")"> #{item.SKU_ID} </foreach> </update>
我这边是将list集合放到了map里面,然后通过键值对的方式用parameters 来批量修改,但我总觉得这段代码写的有问题,看看sql,能不能直接传一个list过去呢?好吧,我来试试..
7月22日:今天在测试这个功能的时候发现一个问题,当where条件相同的时候只能成功update一个。上面的代码中 假如有多个skuid是相同的那么它只能成功修改一个。我问了一个朋友,他说一条sql满足批量更新的操作,所以我更改了sql语句,如下;
<!-- 下单后1个小时 库存回归 --> <update id="updateSkuById" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> UPDATE BIZ_PRODUCT_SKU <set> STOCK_NUM=STOCK_NUM+#{item.STOCK_NUM} </set> where SKU_ID = #{item.SKU_ID} </foreach> </update>
相关推荐
mybatis批量添加的时候报错总结报错 parameter'_frch_item_0 not found
mybatis 框架批量增删改代码 示例 含java与xml
本文给大家分享mybatis批量添加,修改,删除的实例代码,本文代码简单易懂,对mybatis 批量添加、修改及删除相关知识感兴趣的朋友一起学习吧
主要介绍了Mybatis批量修改的操作代码,需要的朋友可以参考下
压缩包有eclipse包文件和操作步骤word文档 mybatis数据操作(增删改查+批量操作)
测试在单元测试中
Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)
主要介绍了Mybatis批量更新三种方式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
跨库批量插入
自定义版mybatis-generator代码生成插件mybatis-generator代码生成插件,实体中文注释,能生成批量插入和批量修改,一对多,多对多
主要介绍了Mybatis中使用updateBatch进行批量更新的相关资料,有逐条更新,sql批量更新等,具体实例代码大家参考下本
在项目中遇到需要批量更新的功能,原本想的是在Java中用循环访问数据库去更新,但是心里总觉得这样做会不会太频繁了,太耗费资源了,效率也很低,查了下mybatis的批量操作,原来确实有标签可以做到,下面通过本文给...
mybatis批处理自动生成代码文件,可以双击运行.bat文件。 targetProject="src\main\java"可以在XML配置文件中更改生成文件的路径
最近在做一个数据抽取工作,因为涉及一些表的数据修改,因此写了个小工具。 主要用到技术: Mybatis , java多线程
mybatis 逆向工程自动生成工具,配置文件中有mysql,oracle,自己根据需要修改。
使用ssm+mybatis+mysql实现用户的登录、用户信息的增删改查,包括批量删除、用户添加、用户信息修改、用户详细信息查看,后面会加入权限控制,角色管理
ibatis 增删改查(DB2版本),用其他数据库的话,直接把配置文件改一下就可以了。WEBROOT下面有建表sql语句
这是MyBatis Generator插件的拓展插件包 应该说使用Mybatis就一定离不开代码生成插件,而此插件本身还提供了插件扩展功能用于增强插件本身,官方已经提供了一些扩展,本项目的目的也是通过该插件机制来强化Mybatis ...
用户管理:批量导入用户、批量操作用户、修改用户信息。 考试管理:进行考试,老师点击开始考试后学生可以答题,选择判断题自动判断对错; 主观题阅卷、查看成绩;考卷维护。 试题新增:可以分别新增单选、多选...
springboot+freemaker+mybatis框架整合的案件后台管理系统,包含案件的excel批量添加,案件跟踪修改,案件每日和每月统计,权限管理(自定义角色)等; 相关技术关键字:springboot freemaker quartz mybatis mysql ...