有时在开发中难免会遇到传入的参数为map类型的时候, map的key为数据库中的主键或者其他的唯一字段, value为需要进行插入的值,在mybaits的XML文件中进行遍历取出map参数中的值, 有两种方式进行处理

方法一:

xml文件中写法

<update id="updateInventoryBatch"  parameterType="java.util.Map"><foreach item="value" index="key" collection="inventoryMap" separator=";" >UPDATE yanxuan_inventory_transferSETinventory = #{value},is_inventory='1',create_time=sysdate()wheresku_id=#{key}</foreach>
</update>

以上 collection ="inventoryMap" 表示的是dao中对应的map的@param的参数名称, index="key" 中的key表示的是map的key值, item="value" 表示的map的key所对应的value值 , 故直接#{key} 和#{value}进行取值即可

dao中的写法

longupdateInventoryBatch(@Param("inventoryMap") HashMap<String, Integer> inventoryMap);

第二中方式:

先遍历map的key, 得到所有的key值, 然后根据key获取对应的value值

xml文件中写法

<update id="updateInventoryBatch"  parameterType="java.util.Map"><foreach item="key"  collection="inventoryMap.keys" separator=";" >UPDATE yanxuan_inventory_transferSETinventory = #{inventoryMap[${key}]},is_inventory='1',create_time=sysdate()wheresku_id=#{key}</foreach>
</update>

以上c ollection="inventoryMap.keys" 表示的遍历map的key, 同理collection="inventoryMap.values"表示的是遍历的map 的value, item="key" 表示的是map的key,    #{inventoryMap[${key}]}取出的是inventoryMap  key所对应的value,

注意: ${key} 必须为使用${}取值, 不能使用#{}, 因为#{} 会自动加上"" 这样是获取不到value值的.

以上是演示mybatis进行批量更新的sql 如果想要实现的话 需要在jdbc_url 链接后面加上&allowMultiQueries=true

允许执行多个SQL语句才能正常执行.

mybatis传入参数为map时如何在mapper.xml中获取相关推荐

  1. MyBatis传入参数为0时条件不生效

    当传入参数为 0 的时候,判断条件无效 <if test="sex != null and sex != '' ">and sex =#{sex } </if&g ...

  2. MyBatis传入参数为list、数组、map写法

    1.foreach简单介绍: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有item,index,collection,open,sep ...

  3. Mybatis传入参数类型为Map

    转载自   Mybatis传入参数类型为Map mybatis更新sql语句: <update id="publishT00_notice" parameterType=&q ...

  4. Mybatis传入参数类型为ListIntergert作为条件进行查询

    Mybatis传入参数类型为List作为条件进行查询 higher2017关注 2017.02.07 10:23:16字数 130阅读 5,658 表结构: 表名称为constant 需求: 现在想查 ...

  5. oracle 返回hashmap,解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错...

    前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" ,然后使用 jackson @ResponseBody 返 ...

  6. MyBatis的mapper.xml中对于一个传参的多重判断

    MyBatis中的mapper.xml中对于一个传递参数的多重判断 <where><if test="stockOrderNum!=null"><if ...

  7. 如何在Node.js中获取本机本地IP地址

    最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...

  8. Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...

    如何在android 10中获取imei编号,这是获取在android 10及以下android 10中获取imei编号的代码. if (android.os.Build.VERSION.SDK_IN ...

  9. MyBatis传入参数与parameterType

    来自大佬:https://www.cnblogs.com/ruiati/p/6410339.html 1.   传入简单类型 Java代码: Java代码   public User get(Long ...

最新文章

  1. java中名词概念的理解
  2. 浙大吴飞教授:尽管AlphaGo Zero已强大到从经验中学习模型,我也绝不赞同马斯克和霍金的威胁论,人才是智能的最终主宰
  3. php5.6 64位配置,centos(64位) 安装PHP5.6,配置LNMP
  4. 用php来检测proxy
  5. OpenCV中# define CV_EXPORTS __declspec(dllexport)的含义
  6. 使用内核定时器的second字符设备驱动及测试代码
  7. 向其他进程注入代码的三种方法
  8. [zz]muduo源码阅读之Thread和ThreadPool
  9. stm32f103c8t6单片机驱动台达伺服电机
  10. 1043 : 最大值
  11. 最大团问题【回溯法】
  12. js获取当前农历时间
  13. Windows 2008 Server线程池前瞻(原创)
  14. Base64 erlang
  15. 凛冬至,这一杯互联网咖啡能热多久?
  16. 两点经纬度计算方位角,以正北为0度
  17. 单层MoS2和WS2晶体/Zn(Ⅱ)-PDA诱导合成二维连续稳定ZIF-8膜/新型大孔的二维结晶聚酰亚胺COFs(PI-COFs)
  18. 矩阵导数(Matrix Differentia)
  19. 解决Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe‘.Read of address xxxxxx
  20. matlab 绘图常用命令

热门文章

  1. FPGA矩阵键盘的驱动设计与验证
  2. 手机检测 打电话识别
  3. PyTorch 可视化工具visdom启动过程中报错解决方法
  4. HTML的文字与段落
  5. 前端 | ( 十一)CSS3简介及基本语法(上) | 尚硅谷前端html+css零基础教程2023最新
  6. 阿里如何抗住双11亿级并发量(深度好文)
  7. python图像对比_python对比图片
  8. 常量-兼谈PHPSTORM配置浏览器
  9. 苏宁科技集团成立后首次战略发布:发力智能平台、智能服务、智能终端
  10. 基于Java+Swing实现连连看游戏