mybatis在foreach语句中循环遍历map

今天在写update代码时候突发奇想,要是我在foreach语句中遍历map不就可以将要修改的值的名字和要修改的值都放到map中一次全拿进来吗?于是我就开始测试
之前学的foreache语句是将要要遍历的List放到map里面,通过map的key找到放到map里面的List
于是我就将想要遍历的map放进了另一个map里面

		Map<String, Object> hashMap = new HashMap<>();
        hashMap.put("id",2);
        hashMap.put("userCode","zyy");
        hashMap.put("userName","zyy");
        hashMap.put("userPassword","0123456789");
        hashMap.put("gender",1);
        hashMap.put("birthday","1999-10-01");
        hashMap.put( "phone","17872018056");
        hashMap.put("address","湖南省岳阳市平江县");
        hashMap.put("userRole",1);
        hashMap.put("createdBy",1);
        hashMap.put("creationDate","2021-05-13");
        hashMap.put("modifyBy",1);
        hashMap.put("modifyDate","2021-05-13");
        Map<String, Object> hashMap2 = new HashMap<>();
        hashMap2.put("hashMap",hashMap);

然后通过查询官方文档得知当使用map作为collection集合时index就表示map的键,item代表map中这个键对应的的值,于是其对应的xml代码为

	<update id="modify" parameterType="map">
        update smbms_user
        <foreach collection="hashMap" index="keys" item="value" open="set " separator="," close=" ">
            ${keys}=#{value}
        </foreach>
        <where>
            id = 2
        </where>
    </update>

这样就能成功获取到map中的键和值了

在查询资料的过程中我还了解到一种方法

java代码

	public int searchCount(Map<String, Object> map) {
		Map<String, Object> map1 = new HashMap<String, Object>();
		map1.put("aa", map);
		return sqlSessionTemplate.selectOne("org.lanqiao.dao.StudentDao.searchCount", map1);
	}

xml中代码

<!-- 符合条件的数据一共有多少条 -->
	<select id="searchCount" resultType="int" parameterType="map" >
		select count(*) from student
		<where>
		<foreach collection="aa.keys" index="index" item="item"  separator="and">
		${item}=#{aa[${item}]}
		</foreach>
		</where>
 
	</select>

转自

这里面有一些我不了解的操作正好一起记录下来
这里aa.keys是获取map中键的集合
还有aa[]是在map中查找[]中填的键对应的值,但是在Java代码中无法使用???这个以后了解了再回来填坑

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值