在实际项目中,经常有初始化数据、迁移数据的情况,经过一次初始化数据的校验之后,简单记录下
需求:
原数据是以json格式存储在一个服务器上的,程序每次都去取这个配置
改造:
把数据迁移到数据库中,通过后台进行增删改查
原数据格式:(pid+mid+sid、pid+mid)
{"1234567890123_12345678901234_asdf":"ka","1234567890124_12345678901234_asdfaw":"ka"}
{"1234567890123_12345678901234":{"merchantName":"DFS机场店"},"2088521596748432_2088521596748432":{"merchantName":"DFS环球店"}}
处理原理:
1.封装json字符串到JSONObject对象
2.遍历JSONObject,整合获取两个json中的共同参数
3.获取到参数后,拆分参数进行数据库查询
4.比对查询结果
代码内容:
String utp_drm="{"1234567890123_12345678901234_asdf":"ka","1234567890124_12345678901234_asdfaw":"ka"}";
String overseaexprod_drm="{"1234567890123_12345678901234":{"merchantName":"DFS机场店"},"2088521596748432_2088521596748432":{"merchantName":"DFS环球店"}}";
//转换utp的drm
JSONObject json_utp = (JSONObject) JSONObject.parse(utp_drm);
//转换oversea的drm
JSONObject json_overseaexprod = (JSONObject) JSONObject.parse(overseaexprod_drm);
//执行条数
int ts=0;
//遍历utp全部数据
for (String key_utp : json_utp.keySet()) {
String key_name ="";
String jieguo = key_utp +"组合未找到匹配的overseaexprod数据";
//循环oversea全部数据
for (String key_overse : json_overseaexprod.keySet()) {
if (key_utp.startsWith(key_overse)) {
JSONObject json_name = (JSONObject) JSONObject.parse(json_overseaexprod.getString(key_overse));
key_name = json_name.getString("merchantName");
jieguo = key_utp +"组合找到匹配的overseaexprod数据";
break;
}
}
System.out.println(jieguo);
//存储drm中的商户汇率等级
String grade = json_utp.getString(key_utp);
//存储drm中的商户名称
String name = key_name;
//存储drm中的id组合
String id = key_utp;
//把drm中的id组合拆分为pid和mid、sid
String[] id_num = id.split("_");
String pid = id_num[0];
String mid = id_num[1];
String sid = id_num[2];
String sql="";
if("*".equals(sid)){
//如果sid为*,查询语句则不带sid
sql ="SELECT * FROM `fx_pms_config` WHERE pid='" + pid +"' AND MID='" + mid +"'";
}else{
sql ="SELECT * FROM `fx_pms_config` WHERE pid='" + pid +"' AND MID='" + mid +"' AND sid='" + sid +"'";
}
//执行查询,返回map集合(该方法是公司框架自定义好的)
DataMap map = DButil4FuncTest.getQueryResultMap(sql, TravelSql.MYSQL);
//System.out.println(map.get("MID"));
//判断map中是否存在数据
if (map.size() >1) {
//判断drm中的商户名称、等级是否和数据库中的一致
System.out.println("已执行"+ts+++"条");
if (name.equals(map.get("NAME")) && grade.equals(map.get("grade"))) {
//System.out.println(id + "组合数据正常");
}else {
System.out.println(id + name +"组合数据和数据库数据不匹配");
}
}else{
System.out.println(id+"组合数据在数据库中未查询出记录");
}