Java 常用工具类(35) : json转表结构ddl

java 复制代码
import com.alibaba.fastjson.JSONObject;
import com.alibaba.gts.flm.base.util.MysqlUtil;
import com.alibaba.gts.flm.base.util.StringUtils;

import java.util.Set;

public class Json转表结构 {

    private static JSONObject j;

    public static void main(String[] args) {
        j = JSONObject.parseObject(s);

        Set<String> keys = j.keySet();

        StringBuffer ddl = new StringBuffer();
        ddl.append("CREATE TABLE lkyw_vehicle_info (\n" +
                "  `pkid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',\n" +
                "  `create_time` datetime DEFAULT NULL COMMENT '创建时间',\n" +
                "  `modify_time` datetime DEFAULT NULL COMMENT '修改时间',\n");
        // 遍历键并获取其类型
        for (String key : keys) {
            Class<?> keyType = j.get(key).getClass();
            String xhx = StringUtils.tuoFengToxiaHuaXian(key);
            ddl.append("  `" + xhx + "` " + MysqlUtil.getMysqlType(getJavaObject(keyType.toString())) + " DEFAULT NULL COMMENT '" + "" + "',\n");
        }

        ddl.append(
                "  PRIMARY KEY (`pkid`)\n" +
                        ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='';");
        System.out.println(ddl);
    }

    public static String getJavaObject(String kt) {
        switch (kt) {
            case "java.lang.String":
                return "String";
            case "java.lang.Integer":
            case "java.lang.Long":
                return "Long";
            case "java.lang.Float":
            case "java.lang.Double":
            case "class java.math.BigDecimal":
                return "Double";
            default:
                break;
        }
        return "String";
    }

    public static String s = "{\n" +
            "            \"age\": \"6\",\n" +
            "            \"name\": \"张三\",\n" +
            "            \"speed\": 553.8017520000001,\n" +
            "            \"lng\": 103.980244,\n" +
            "            \"lat\": 30.694589\n" +
            "        }";
}
复制代码
MysqlUtil
java 复制代码
import java.util.LinkedList;
import java.util.List;

/**
 * @Author: liyue
 * @Date: 2022/08/17/11:39
 * @Description:
 */
public class MysqlUtil {
    public static final List<String> types = new LinkedList<String>() {{
        add("tinyint");
        add("int");
        add("integer");
        add("bigint");
        add("float");
        add("double");
        add("char");
        add("varchar");
        add("datetime");
        add("text");
    }};

    public static String getJavaType(String mysqlType) {
        switch (mysqlType) {
            case "tinyint":
            case "int":
            case "integer":
                return "Integer";
            case "bigint":
                return "Long";
            case "float":
                return "Float";
            case "double":
                return "Double";
            case "text":
            case "char":
            case "varchar":
            case "datetime":
                return "String";
            default:
                throw new RuntimeException("未找到与java映射的类型");
        }
    }

    public static String getMysqlType(String javaType) {
        switch (javaType) {
            case "String":
                return "varchar(100)";
            case "Long":
                return "bigint";
            case "Double":
                return "double";
            case "double":
                return "Double";
            default:
                throw new RuntimeException("未找到与mysql映射的类型");
        }
    }
}
复制代码
StringUtils

Java 常用工具类(22) : 字符串处理_java 字符处理 工具包-CSDN博客

相关推荐
传奇开心果编程1 分钟前
【Rust入门练中学】 第1课:从零开始
开发语言·学习·rust
K 旺仔小馒头2 分钟前
【项目】商城系统用户端测试报告
自动化测试·python·功能测试
东莞市云毅网络有限公司14 分钟前
用 SQLite FTS5 给企业文档建本地全文索引:中文分词与权重调优
python·数据清洗·rag·企业知识库·文档解析
钱栈up15 分钟前
health从200变000:一次差点引发双端口冲突的后端巡检复盘
python
正经教主16 分钟前
【FDE系列】阶段2:Day 22:变量、数据类型、条件判断 — Python 的“记忆“和“判断“
人工智能·python·fde
Brilliantwxx40 分钟前
【STM32】 SPI阻塞式通信与HAL源码(串口读ID实战)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
打工仔折腾 AI1 小时前
Pascal Editor 本地部署实战:Bun 启动 WebGPU 3D 编辑器并解决公网访问报错
人工智能·后端·python·性能优化
m0_547486661 小时前
《Python从入门到数据分析应用》全套PPT课件2026
python·数据分析
All for pursuit.1 小时前
FastAPI+Ollama 部署本地AI大模型对话助手
python·github·aigc·ollama
吠品1 小时前
Nginx负载均衡配置与线上故障排查的一些经验
java·开发语言·数据库