mybatis实现遍历Map的key和value

mybatis 遍历Map的key和value

sql.xml




 
	
	
 
	
	
		insert into ${tableName}
		
			${key}
		
		values
		
			#{value}
		
	
 
	
	
		UPDATE ${tableName} SET
		
			${key} = #{content[${key}]}
		
		where seq = #{content[seq]} and genius_uid <=
		#{content[genius_uid]};
	
 
	
	
		delete from ${tableName}
		where seq = #{content[seq]};
	
 

java代码

SqlSession session = MyBatisConnectionFactory.getSession("pg");
				HashMap params = new HashMap<>(); //传入的参数
				params.put("content", tableContent);
				params.put("tableName", tableName);
				params.put("seq", seq);
int flag = session.delete("deleteOne", params); //删除记录
HashMap map = session.selectOne("selectOne", params); //查询记录是否存在
flag = session.update("updateOne", params) > 0 ? true : false; //更新
flag = session.insert("insertOne", params) > 0 ? true : false; //新增

foreach嵌套遍历Map的key和value

最近做东西,需要向数据库存储一个保存在HashMap的key和value中的数据。具体的结构大致是Map>。

数据库中需要保存两个个字段:1.key中对象的id,set中的多个string,显然id和set中的string是1对多的关系;需要嵌套循环。

一开始怀疑Mybatis能否做到这样灵活sql,经过尝试,证明了Mybatis的强大。

具体做法:(Oracle数据库)


  INSERT INTO sp4_acl_so (acl_id, so_uuid__proc_def_id)
  
    
      SELECT #{item.aclId}, #{set}
      FROM DUAL
    
  
  • aclDeviceMap:就是在接口中使用@Param("aclDeviceMap")标注了变量

使用

aclDeviceMap.keys可以取到所有的key,遍历。

内层循环中使用

aclDeviceMap[item]类似aclDeviceMap.get("key")取当前key对应的value值。由于value是set所以还需要遍历。

结果保存成功。再次膜拜强大的Mybatis。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(mybatis实现遍历Map的key和value)