需求:導出json文件,解析數據存入數據庫數據庫
json格式[{k:v,k:v},{..},{..}]json
json文件是json數組中包含json對象,json對象是表的字段名和值數組
json數據大約有200w條,若是直接用流的方式讀成對象,不太可能數據太大了mybatis
解決方法:用alilibaba.fastjsonapp
阿里的json能夠實現一邊讀一邊存的,這樣就能夠控制一次存儲的數量spa
pubic void sive(){ File file=new File(path);//json文件路徑 List<reportData> reportData=new ....//實體對象的list集合 JSONReader reader=new JSONReader(new FileReader(file)); int count=0; read.starArray();//開始讀json數組 while(readser.hasNext()){ read.startObject();//開始取json對象 JSONObject json=new JSONObject(); while(reader.hasNext()){ string key=reader.readString();//json的key string value=reader.readObject().toString();//json的value json.put(key,value); } reportData data=JSON.parseObject(json.toString(),reportData.class)//jso格式轉換對象 reportData.add(data); count++; if(count%5000==0){//每5000條數據插入一次數據庫,數據庫操做用的mybatis的循環insert mapper.save(reportData); reportData.clear();//清空list } reader.endObject(); } reader.endArray(); reader.close(); if(reportData.size()>0){//若是讀完以後,size>0,說明list還有數據,數據不足5000 mapper.save(erportData) } }