本博客主要用两个例子来说明一下批量删除和批量插入双层循环的用法,顺便自己记录一下,方便以后使用。

1、批量删除

(1):dao中的写法:

public int batchDelPrice(@Param("deleteList")List> deleteList);

其中deleteList是一个Map的集合,Map中的Object是一个list集合,deleteList拼接如下:

List deletePriceId = getDelPriceId(oriPriceId,nowPriceId);

Map deleteMap = new HashMap();

deleteMap.put("userCode", userCode);

deleteMap.put("delete", deletePriceId);

deleteList.add(deleteMap);

(2):xml中的写法:

delete from xxx

where user_code = #{deleteItem.userCode}

and product_id in

#{item}

注意:批量删除操作,每个sql间是以分号间隔的,即最外层分隔符是separator=";"。

2、批量插入:

(1):dao中的写法:

public int batchAddPrice(@Param("addList")List> newAddList);

newAddList中的数据拼接如下:

List> newAddList = new ArrayList>();

for(int i = 0; i < addList.size(); i++){

Map userMap = addList.get(i);

//获取需要增加的产品id集合

List priceIds = (List) userMap.get("add");

List> priceList = new ArrayList>();

//遍历产品id集合,取相应的产品默认价格,组装成一个新的产品+默认价格集合

for(int j = 0; j < priceIds.size(); j++){

Map priceMap = new HashMap();

String priceId = priceIds.get(j);

//取相应产品id的默认价格

double defPrice = productDefPrice.get(Integer.valueOf(priceId)).get("default_price");

priceMap.put("priceId", priceId);

priceMap.put("defPrice", defPrice);

priceList.add(priceMap);

}

userMap.put("priceList", priceList);

newAddList.add(userMap);

}

(2):xml中的写法:

insert into xxx(

user_code,product_id,price,efftime,index_num,pubtime

)values

(

#{addItem.userCode},#{priceItem.priceId},#{priceItem.defPrice},now(),1,now()

)

以上是批量插入和批量删除的其中一种写法,有用到双层循环的可以借鉴一下,有什么意见希望大家提出来。

此外。在使用过程中如果想让查询出的多条记录变成一个Map,想直接通过map.get(key)方式获取value的同学,可以参考下面的一个写法:

(1):dao中的写法:

@MapKey("product_id")

public Map> queryProductDefPrice();

其中@MapKey中是你要当成查出的map的key值的字段名称,Map中的字段为查询出的字段,我这里查出的Map是:{1={product_id=1,default_price=10.0}}

(2):xml中的写法:

select product_id,default_price from xxx

希望对大家有所帮助。

补充:mybatis 两层循环的insert语句

使用这个insert语句可以在表名,字段名称和字段个数都不确定的情况下插入数据。

insert into ${table}(${lineColumn}) values

(

#{_value}

)

这个insert接收一个map)作为参数,其中放了,一个List,两个字符串。其中字符串分别是table(要插入的表名),lineColumn(列名)这在insert语句中都有用到。

第一层循环遍历List,其中存放的是一条条要插入数据库的数据,其中每条数据保存在一个map中。

第二层循环每次遍历一个从List中取出的map。

区分两个map,一个是作为参数的map,paramMap,里面有表名,字段名,LIst,一个是存放一行数据的map,dataMap

lineConlumn 是通过字符串拼接得到的。形如: 字段1,字段2,字段3

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

java批量导入和批量删除_MyBatis 实现批量插入和删除中双层循环的写法案例相关推荐

  1. 批量导入手机通讯录_手机QQ批量导入电话号码

    这个小技巧在三年前我已经写过一回了,但现在QQ也更新了几个版本,原来的方法操作起来总有些功能受限,所以重新写过. 操作大致分三步 第一步:在电脑上做一个电子表格,按自己的需要保留必需的项目,我这里只填 ...

  2. 手机号码批量导入通讯录php,怎么用 Excel 批量录入电话号码并导入到 Android 手机...

    前些日子需要批量向我的 Android 手机导入已经用 excel 制作好的电话号码,于是找了些资料,总算弄好了.在我的小米手机和同事的华为上导入都没问题,其它品牌未试. 基本步骤: [Step 1] ...

  3. poi读取excel导入mysql_poi读取xlsx表格内容并插入到mysql中,OutOfMemoryError

    看代码: CSVWriter:package com.util; import java.io.Closeable; import java.io.IOException; import java.i ...

  4. java excel批量导入数据库数据_Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  5. neo4j︱neo4j批量导入neo4j-import (五)

    neo4j数据批量导入 1 neo4j基本参数 1.1 启动与关闭: 1.2 neo4j-admin的参数:控制内存 1.2.1 memrec 是查看参考内存设置 1.2.2 指定缓存–pagecac ...

  6. 如何将excel里的数据批量导入ACCESS,要用vb代码?

    下面是对EXECL的基础操作说明: Set xlApp = CreateObject("Excel.Application") '激活EXCEL应用程序 xlApp.Visible ...

  7. c# mysql 批量导入_C#:MySql批量数量导入

    现在对数据库(以MySql为例)的操作大多会封装成一个类,如下例所示: namespace TESTDATABASE { public enum DBStatusCode { ALL_OK, MySq ...

  8. Excel批量导入数据库

    在上个系统中需要用到Excel整体导入的功能整体的核心思路如下: 1. 首先将需要导入的Excel上传至服务器 2. 为了避免文件名重复,重命名上传的Excel文件 3. 将上传的Excel文件读入D ...

  9. 使用python向Redis批量导入数据

    1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler):def connect(self): ...

最新文章

  1. [NOI2011]Noi嘉年华
  2. CSS中连接属性的排序
  3. docker update_DevOps核心:使用Docker部署Jenkins持续集成服务器
  4. iOS 版 Skype支持群组语音聊天
  5. CentOS中启动Jar包、后台启动、查看输出日志、查看服务进程、杀死进程
  6. 垃圾收集器准则和提示
  7. C语言 二级指针内存模型混合实战
  8. 内核中架构相关代码简介
  9. MyEclipse Profile 结合visualvm 监控内存泄露
  10. ntpd、ntpdate、hwclock的区别
  11. ASP.NET MVC程序播放H.264视频
  12. Qt: 监听文件夹QFileSystemWatcher;
  13. 数组 -- removeElement -- 图解
  14. SAP UI5 应用开发教程之六十五 - 基于 OData V4 的 SAP UI5 表格控件如何实现创建,编辑和保存功能试读版
  15. 本地文件搜索神器 --- Everything软件,快速搜索本地磁盘上的文件
  16. 201621123062《java程序设计》第11周作业总结
  17. MySQL中 反引号、单引号 和 双引号 的区别
  18. c++基础题:判断某整数是否既是5又是7的整数倍
  19. SpringSecurityOauth中token(Basic、Bearer)
  20. BUUCTF——MISC

热门文章

  1. 自由之战服务器显示登录失败,自由之战:生存的游戏一直登入不进去怎么办
  2. linux赋高权命令有哪些,Linux命令中的Z原来是这个意思
  3. 简述数学建模的过程_数学建模研究过程指导(精编版) Part IV
  4. 机器视觉LCD行业质量检测解决方案
  5. 空循环和无穷循环的区别
  6. Hadoop源码篇--Reduce篇
  7. 关于最近有人恶意诽谤Yeslab的回应!
  8. 实现加入购物车抛物线效果
  9. jQuery Validate 表单验证插件----Validate简介,官方文档,官方下载地址
  10. 异常总结2013-04