遍历json数据批量插入数据库
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
之前碰到过一个问题,如果大批量数据要插入到数据库怎么做?今天记录一下。
1.想法
我的想法是首先拿到需要插入的数据,最好是json数据或者是json格式的数组,通过筛选出必要的数据装载到一个集合数组中,然后批量插入到数据库即可。我觉得有两个地方是难点,第一个,json格式嵌套的很深,那么取值的工作会很艰难。第二个,对批量插入数据的这种方式是否熟悉。
2.第一步,拿到数据,并放到resource目录下。
[
{
"code": "110100",
"name": "市辖区",
"parent_code": "110000"
},
{
"code": "120100",
"name": "市辖区",
"parent_code": "120000"
},
{
"code": "130100",
"name": "石家庄市",
"parent_code": "130000"
},
{
"code": "130200",
"name": "唐山市",
"parent_code": "130000"
}]
数据的格式大概就是这样,嵌套的并不深,稍微循环一下就行。
3.第二步,拿到这个json文件并取值。
public static void main(String[] args) throws Exception {
File jsonfile = ResourceUtils.getFile("classpath:city.json"); //通过Java自带的读取工具对文件目录下的文件进行读取
String jsonsting = FileUtils.readFileToString(jsonfile); //读取到的文件转换成为String类型
JSONArray array = JSONArray.parseArray(jsonsting); //根据原本的类型转换为json数组
Map<String,Object> maps = new TreeMap<>(); //采用treemap的原因是想让数据有序,免得数据库里面的数据杂乱无章
for (int i=0;i<array.size();i++){ //遍历循环,根据不同的json文件采用不同的方式
JSONObject jsons = JSONObject.parseObject(array.get(i).toString()); //遍历取
maps.put(jsons.getString("code"),jsons.getString("name")); //遍历存
}
//int counts = commonCityMapper.insertBatch(maps);
System.out.println(maps);
//System.out.println(list.get(0).get("130200"));
}
感觉这个注释已经写得很仔细了,不懂的可以私信我。不要认为解析json文件很难,还要写工具类什么的,其实你只需要对Java这门语言多深入了解一点就会发现这些都是常用的东西。
4.将需要的数据遍历放到map数组里面之后就需要去存到数据库了
int insertBatch(@Param("mapData") Map<String, Object> mapData);
首先是mappper.java文件中的定义
<insert id="insertBatch" parameterType="map">
insert into api_common_city (city_name, city_code)
values
<foreach item="value" index="key" collection="mapData.entrySet()" open="(" separator="),(" close=")">
#{key}, #{value}
</foreach>
</insert>
这里是采用mybaits中的foreach形式进行遍历存储。首先我通过mapper.java传入一个map数组进来。collection通过遍历这个数组拿到值,将值value赋给item,将key赋给index,一个是存放数据,一个是标识起始位置,map数组每次取出一个key和一个value,所以不用担心会弄混。然后将key和value当做数据配合insert语句存储即可,速度非常快。
5.总结
还是要学好基础,如果不懂map的遍历,那么连mybatis里面的collection中的方法都不知道;如果对Java基础不了解,你连解析文件的工具类都要自己写;如果不动手,永远不知道在此之中可以学到很多知识。我们这一行,注定要多动手,多学习。
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)