需求:
需要一个按钮,每次执行的时候,调接口刷新数据库表中的数据:
刷新条件:
如果接口获取的数据和数据库表的数据完全一致则不刷新,如果不一致,则新增数据;
// 实现接口层
@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>