数据库字段:
实体类
public class javaBean {
public String code;
public String name;
public String parent_code;
}
主要代码:
package test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import com.google.gson.Gson;
public class Sqltojson {
public static void main(String[] args) {
try {
// 调用Class.forName()方法加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
System.out.println("成功加载MySQL驱动!");
String url = "jdbc:mysql://localhost:3306/fyb"; // JDBC的URL
Connection conn;
conn = DriverManager.getConnection(url, "root", "root");
Statement stmt = conn.createStatement(); // 创建Statement对象
System.out.println("成功连接到数据库!");
String sql = "select * from base_province x union select * from base_city y union select * from base_country z "; // 要执行的SQL
ResultSet rs = stmt.executeQuery(sql);// 创建数据对象
System.out.println("ID" + "\t\t" + "code" + "\t\t" + "name"
+ "\t\t"+"parentcode" + "\t\t" + "deep" + "\t\t" );
// while (rs.next()) {
// System.out.print(rs.getString(1) + "\t\t");
// System.out.print(rs.getString(2) + "\t\t");
// System.out.print(rs.getString(3) + "\t\t");
// System.out.print(rs.getString(4) + "\t\t");
// System.out.print(rs.getInt(5) + "\t\t");
// System.out.println();
// }
saveListData(rs);//分类存数据
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 存数据
*/
public static void saveListData(ResultSet rs) {
try {
ArrayList<javaBean> province = new ArrayList();
ArrayList<javaBean> city = new ArrayList();
ArrayList<javaBean> country = new ArrayList();
while (rs.next()) {
int area_deep = rs.getInt(5);//此处是spl数据中的地区深度(1,2,3-->省市区)
if (area_deep == 1) {
javaBean theatyBean = new javaBean();
theatyBean.code = rs.getString(2);
theatyBean.name = rs.getString(3);
theatyBean.parent_code = rs.getString(4);
province.add(theatyBean);
} else if (area_deep == 2) {
javaBean theatyBean = new javaBean();
theatyBean.code = rs.getString(2);
theatyBean.name = rs.getString(3);
theatyBean.parent_code = rs.getString(4);
city.add(theatyBean);
} else if (area_deep == 3) {
javaBean theatyBean = new javaBean();
theatyBean.code = rs.getString(2);
theatyBean.name = rs.getString(3);
theatyBean.parent_code = rs.getString(4);
country.add(theatyBean);
}
}
RankBeanList(province, city, country);
// Arrayprintln(beanlist01);
// Arrayprintln(beanlist02);
// Arrayprintln(beanlist03);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 通过三个级别数据,循环遍历
*/
private static void RankBeanList(ArrayList<javaBean> province,
ArrayList<javaBean> city, ArrayList<javaBean> country) {
LinkedList<LinkedHashMap<String, Object>> provinceList = new LinkedList<LinkedHashMap<String, Object>>();// 省集合
for (int i = 0; i < province.size(); i++) {
LinkedHashMap<String, Object> prMap = new LinkedHashMap<String, Object>();
prMap.put("name", province.get(i).name);
prMap.put("id", province.get(i).code);
List<LinkedHashMap<String, Object>> citylist = new ArrayList<LinkedHashMap<String, Object>>();// 市集合
for (int j = 0; j < city.size(); j++) {
if (province.get(i).code.equals( city.get(j).parent_code)) {
LinkedHashMap<String, Object> cityMap = new LinkedHashMap<String, Object>();
System.out.println("执行力吗");
cityMap.put("name", city.get(j).name);
cityMap.put("id", city.get(j).code);
List<LinkedHashMap<String, Object>> arealist = new ArrayList<LinkedHashMap<String, Object>>();// 区名字集合
//ArrayList<String> list_area_id = new ArrayList<String>();// 区编号集合
for (int k = 0; k < country.size(); k++) {
if (city.get(j).code.equals(country.get(k).parent_code)) {
LinkedHashMap<String, Object> countryMap = new LinkedHashMap<String, Object>();
countryMap.put("name", country.get(k).name);
countryMap.put("id", country.get(k).code);
arealist.add(countryMap);
}
}
cityMap.put("area",arealist);
citylist.add(cityMap);
}
prMap.put("city", citylist);// 省下面的市集合
}
provinceList.add(prMap);
}
mapPrintln(provinceList);// 输出
}
/**
* <P>
* 打印map集合和数据
* </p>
*
* @param list
*/
private static void mapPrintln(List<LinkedHashMap<String, Object>> list) {
// TODO Auto-generated method stub
if (list == null && list.size() == 0) {
return;
}
System.out.println(list.size()
+ "---size--------------------------------------------------");
// System.out.println(list.toString());
Gson gson = new Gson();
String jsonString = gson.toJson(list);
inputFile(jsonString);// json文件
System.out.println("输出list:"+list);// 打印
}
/**
* 开启线程
*
* @param jsonString
*/
private static void inputFile(final String jsonString) {
// TODO Auto-generated method stub
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
WriteConfigJson(jsonString);
}
}).start();
}
/**
* 输出json文件
*
* @param args
*/
public static void WriteConfigJson(String args) {
String src = "D:\\province.json";// 自定义文件路径
File file = new File(src);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
file.delete();
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
FileWriter fw = new FileWriter(file, true);
fw.write(args);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果(只展示部分):
[{name=北京市, id=110000, city=[{name=北京市, id=110100, area=[{name=东城区, id=110101}, {name=西城区, id=110102}, {name=朝阳区, id=110105}, {name=丰台区, id=110106}, {name=石景山区, id=110107}, {name=海淀区, id=110108}, {name=门头沟区, id=110109}, {name=房山区, id=110111}, {name=通州区, id=110112}, {name=顺义区, id=110113}, {name=昌平区, id=110114}, {name=大兴区, id=110115}, {name=怀柔区, id=110116}, {name=平谷区, id=110117}, {name=密云县, id=110228}, {name=延庆县, id=110229}]}]}, {name=天津市, id=120000, city=[{name=天津市, id=120100, area=[{name=和平区, id=120101}, {name=河东区, id=120102}, {name=河西区, id=120103}, {name=南开区, id=120104}, {name=河北区, id=120105}, {name=红桥区, id=120106}, {name=东丽区, id=120110}, {name=西青区, id=120111}, {name=津南区, id=120112}, {name=北辰区, id=120113}, {name=武清区, id=120114}, {name=宝坻区, id=1201