关于myBatis嵌套foreach

最近项目遇到一个需求:

从JSON里解析数据后,批量插入到数据库(重点在于不是只针对一个表操作,而是根据json里的表名和字段来动态插入),数据库用的Oracle;

下面贴代码

 

java代码

//dataStr为
 

{ 
"tbl_pe_enterprise_record":[{"RECORD_ID":"1","AP_CHN_ADDRESS":"shachong","APPLY_DATE":"2019/12/31"},{"RECORD_ID":"2","AP_CHN_ADDRESS":"shachong2","APPLY_DATE":"2019/12/31"}],

"tbl_pe_imex_pestcert_r_rs":
[{"PDRGID":"1","PDRGNO":"shachong","PDBEGINDAY":"2019/12/31"},{"PDRGID":"2","PDRGNO":"shachong2","PDBEGINDAY":"2019/12/31"}]
}

Map>> dataListMap = 
JSON.parseObject(dataStr, new TypeReference>>>() {});
        Set>>> entries = dataListMap.entrySet();
        for (Map.Entry>> entry:entries) {
            String tableName = entry.getKey();
            List> dataList = entry.getValue();

            //获取table对应的字段fileld
            Table query = new Table();
            query.setName(tableName);
            query.setStatus("0");
            List fields = fieldMapper.selectByTable(query);
            commonMapper.batchInsertData(tableName,fields,dataList);
        }

 

mapper文件如下


    insert into ${tableName}
    
      ${item.name}
    
    SELECT t.* FROM (
    
      select
      
        
          to_date(#{data.${item.name}},'yyyy/MM/dd')
        
        
          #{data.${item.name}}
        
        
      
      from dual
    
    ) t
  

主要记录foreach的嵌套循环,和#{data.${item.name}}这种用法

你可能感兴趣的:(mybatis)