<Java Iterator> 迭代器Iterator双层循环 案例分享

需求:
需要一个按钮,每次执行的时候,调接口刷新数据库表中的数据:
刷新条件:
如果接口获取的数据和数据库表的数据完全一致则不刷新,如果不一致,则新增数据;

	// 实现接口层
	@Override
    public Result addInfo(Map<String, Object> paramMap) {
 
		List<Map<String,String>> reg = getRegionInfo();  // 接口获取的数据
		List<Map<String,String>> list = xxxMapper.selectQuestRegAll();  // 数据库查询的数据
		Iterator<Map<String, String>> iterator = reg.iterator();
		while (iterator.hasNext()){
			Map<String, String> next = iterator.next();
			String name = String.valueOf(next.get("name"));
			String code = String.valueOf(next.get("code"));
			Iterator<Map<String, String>> iterator2 = list.iterator();
			while (iterator2.hasNext()){
				Map<String, String> next2 = iterator2.next();
				String regionName = String.valueOf(next2.get("name"));
				String RegionCode = String.valueOf(next2.get("code"));
				// 根据条件删除数据:
				if(name.equals(regionName) && code.equals(RegionCode)){
					iterator.remove();
				}
			}
		}
		// 如果reg有数据,则新增;
		if(reg.size() > 0){
			xxxMapper.addInfo(reg);
		}

	// Mapper层
	void addInfo(List<Map<String, String>> paramList);
	
	// 持久化层
	<!-- 数据刷新 -->
    <insert id="addInfo" parameterType="java.util.List">
        <foreach collection="list" item="customer" index="index" separator=";">
            INSERT IGNORE INTO xxx_form_data
            <foreach collection="customer.entrySet()" index="key" separator="," open="(" close=")">
                ${key}
            </foreach>
            VALUES
            <foreach collection="customer.entrySet()" item="value" separator="," open="(" close=")">
                #{value}
            </foreach>
        </foreach>
    </insert>

你可能感兴趣的:(java,MyBatis,java,oracle,开发语言)