package org.linjinyu.generator;
/**
* @Description: Java类作用描述
* @Author: linjinyu
* @CreateDate: 8/12/20 11:04 AM
* @UpdateUser: linjinyu
* @UpdateDate: 8/12/20 11:04 AM
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
public class SqlSentence {
public static String INTEGER = "java.lang.Integer";
public static String LONG = "java.lang.Long";
public static String STRING = "java.lang.String";
public static String JSONOBJECT = "com.alibaba.fastjson.JSONObject";
public static String FLOAT = "java.lang.Float";
public static String DOUBLE = "java.lang.Double";
public static String BIG_DECIMAL = "java.math.BigDecimal";
public static String DATE = "java.util.Date";
}
package org.linjinyu.generator;
import lombok.Data;
import java.util.List;
/**
* @Description: Java类作用描述
* @Author: linjinyu
* @CreateDate: 8/12/20 11:05 AM
* @UpdateUser: linjinyu
* @UpdateDate: 8/12/20 11:05 AM
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Data
public class JsonMetaNode {
private String key;
private String valueType;
/**
* 数据库中的列名
*/
private String dbColName;
private List<JsonMetaNode> children;
public JsonMetaNode() {
}
public JsonMetaNode(String key, String valueType) {
this.key = key;
this.valueType = valueType;
}
}
package org.linjinyu.generator;
import java.util.List;
/**
* @Description: Java类作用描述
* @Author: linjinyu
* @CreateDate: 8/12/20 11:01 AM
* @UpdateUser: linjinyu
* @UpdateDate: 8/12/20 11:01 AM
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
public class SqlUtil {
/**
* 建表语句
*
* @param tableName
* @param jsonMetaNodeList
* @return
*/
public static String createTable(String tableName, List<JsonMetaNode> jsonMetaNodeList) {
String sqlCreate = "CREATE TABLE " + tableName + "(\n" + getRowName(jsonMetaNodeList);
return sqlCreate;
}
/**
* 获取建表语句的列名
*
* @param jsonMetaNodeList
* @return
*/
private static String getRowName(List<JsonMetaNode> jsonMetaNodeList) {
StringBuffer sqlRowNameBuffer = new StringBuffer();
for (JsonMetaNode jsonMetaNode : jsonMetaNodeList) {
String key = jsonMetaNode.getKey();
String valueType = jsonMetaNode.getValueType();
String type = "";
if (SqlSentence.INTEGER.equals(valueType)) {
type = "int(10)";
} else if (SqlSentence.LONG.equals(valueType)) {
type = "bigint(20)";
} else if (SqlSentence.STRING.equals(valueType)) {
type = "varchar(100)";
} else if (SqlSentence.BIG_DECIMAL.equals(valueType)) {
type = "decimal(20,4)";
} else if (SqlSentence.FLOAT.equals(valueType)) {
type = "float(100,10)";
} else if (SqlSentence.DOUBLE.equals(valueType)) {
type = "double(100,10)";
} else if (SqlSentence.DATE.equals(valueType)) {
type = "datetime";
} else {
type = "varchar(100)";
}
sqlRowNameBuffer.append(key).append(" ").append(type).append(" ").append("CHARACTER SET utf8 NULL ,");
}
sqlRowNameBuffer.deleteCharAt(sqlRowNameBuffer.length() - 1);
sqlRowNameBuffer.append(")");
String sqlRowName = sqlRowNameBuffer.toString();
return sqlRowName;
}
}
package org.linjinyu.generator;
import cn.hutool.core.io.file.FileReader;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* @Description: 能运行, 但还是差很多
* @Author: linjinyu
* @CreateDate: 8/12/20 11:02 AM
* @UpdateUser: linjinyu
* @UpdateDate: 8/12/20 11:02 AM
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Slf4j
public class JsonTest {
public void generatorFromJavaBean() throws IOException {
}
@Test
public void generatorFromJson() throws IOException {
List<JsonMetaNode> jsonMetaNodeList = new ArrayList<>();
/** **************************************** 读取json **************************************** **/
// 默认UTF-8编码,可以在构造中传入第二个参数做为编码
FileReader fileReader = new FileReader("/run/media/linjinyu/NTFS/JAVA_HOME/workspace_superdesk/superdesk-uniorder-ex/superdesk-uniorder-ex-patch/src/test/java/org/linjinyu/generator/test001.json");
String jsonStr = fileReader.readString();
/** **************************************** 读取json **************************************** **/
// 转换成json对象
JSONObject jsonObject = (JSONObject) JSON.parse(jsonStr);
Set<String> strings = jsonObject.keySet();
Iterator<String> iterator = strings.iterator();
// 遍历json对象,根据key获取value并获取value的类型
while (iterator.hasNext()) {
JsonMetaNode jsonMete = new JsonMetaNode();
String next = iterator.next();
jsonMete.setKey(next);
Object o = jsonObject.get(next);
String name = o.getClass().getName();
jsonMete.setValueType(name);
jsonMetaNodeList.add(jsonMete);
}
// 调用建表语句的方法
String sqlCreateTable = SqlUtil.createTable("sql_test", jsonMetaNodeList);
System.out.println(sqlCreateTable);
}
}
Original url: Access
Created at: 2020-08-12 10:31:33
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论