使用java 写一个json 转 mysql 的代码 批量转换 名称自动对应
时间: 2024-03-23 21:41:39 浏览: 128
java 和 json 对象间转换
下面是一个简单的Java程序,可以实现批量将JSON数据转换为MySQL表中的数据,并自动对应字段名:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonToMysqlBatch {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"张三\",\"age\":18,\"gender\":\"男\"},{\"name\":\"李四\",\"age\":20,\"gender\":\"女\"}]";
JSONArray jsonArray = new JSONArray(jsonStr);
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
String sql = getInsertSql(jsonArray.getJSONObject(0), "student");
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Iterator<String> keys = jsonObject.keys();
int j = 1;
while (keys.hasNext()) {
String key = keys.next();
ps.setObject(j++, jsonObject.get(key));
}
ps.addBatch();
}
ps.executeBatch();
System.out.println("数据批量插入成功!");
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private static String getInsertSql(JSONObject jsonObject, String tableName) {
Iterator<String> keys = jsonObject.keys();
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO ");
sb.append(tableName);
sb.append("(");
while (keys.hasNext()) {
String key = keys.next();
sb.append(key);
if (keys.hasNext()) {
sb.append(",");
}
}
sb.append(") VALUES (");
for (int i = 0; i < jsonObject.length(); i++) {
sb.append("?");
if (i < jsonObject.length() - 1) {
sb.append(",");
}
}
sb.append(")");
return sb.toString();
}
}
```
上述代码中,我们首先将JSON字符串解析为JSONArray对象,然后根据第一个JSONObject对象的字段名构造INSERT语句。接着,我们使用JDBC连接MySQL数据库,并使用PreparedStatement批量插入数据。在循环中,我们使用Iterator迭代器遍历每个JSONObject对象的字段,然后将其值设置到PreparedStatement对象中。最后,我们执行executeBatch方法批量插入数据。
需要注意的是,该程序只能处理JSON对象中的字段名和MySQL表中的字段名完全一致的情况。如果有不一致的字段名,需要进行相应的修改。另外,该程序只能处理简单的JSON对象,如果有复杂的JSON对象需要插入到MySQL表中,需要进行相应的修改。
阅读全文