反向生成:根据mybatis生成的Class实体类对象反向生成建表语句

news2024/11/24 11:41:10

微信公众号:大数据高性能计算
在这里插入图片描述

针对数据库不小心被删除的情况,以及需要逆向查看某个开源项目数据库表的情况时,往往需要逆向工程。

在这里我们假设 id 字段为主键。在生成 SQL 建表语句时,我们添加了 PRIMARY KEY (id) 来定义 id 字段作为主键的约束。
请确保实体类 Entity 中存在名为 id 的字段,并且该字段定义了 @Id 注解,以确保 id 字段作为主键被正确识别。
如果实体类 Entity 中没有 id 字段,或者没有使用 @Id 注解,需要根据实际情况修改代码,将主键字段的名称和注解进行适当的调整。


import java.lang.reflect.Field;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        String tableName = "表名";
        StringBuilder sql = new StringBuilder();
        sql.append("CREATE TABLE ").append(tableName).append(" (\n");

        Class<Entity> entityClass = Entity.class;
        Field[] fields = entityClass.getDeclaredFields();
        for (Field field : fields) {
            String fieldName = field.getName();
            String fieldType = field.getType().getSimpleName();
            
            // 根据字段类型转换为数据库对应的数据类型
            String dbType = convertToDbType(fieldType);
            
            // 添加字段和数据类型到SQL语句中
            sql.append("\t").append(fieldName).append(" ").append(dbType).append(",\n");
        }
        
        // 添加主键约束
        sql.append("\tPRIMARY KEY (id)\n");
        
        sql.append(");");
        
        System.out.println(sql.toString());
    }
    
    private static String convertToDbType(String fieldType) {
        Map<String, String> typeMap = new HashMap<>();
        typeMap.put("boolean", "BOOLEAN");
        typeMap.put("byte", "TINYINT");
        typeMap.put("short", "SMALLINT");
        typeMap.put("int", "INT");
        typeMap.put("long", "BIGINT");
        typeMap.put("float", "FLOAT");
        typeMap.put("double", "DOUBLE");
        typeMap.put("char", "CHAR(1)");
        typeMap.put("String", "VARCHAR(255)");
        typeMap.put("Date", "DATETIME");
        // 可以继续添加其他类型的映射关系
        
        String dbType = typeMap.get(fieldType);
        
        if (dbType == null) {
            dbType = "VARCHAR(255)";
        }
        
        return dbType;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1071462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

温控仪工作原理

温控仪的工作原理&#xff0c;是通过温度探头或热电偶反馈的电信号&#xff0c;温控仪将得到的电信号转化成温度值&#xff0c;根据设定的温度值&#xff0c;控制加热器的接通和断开来达到控制温度范围的&#xff1a; 1、温度探头或热电偶受温度变化时&#xff0c;会产生微弱的…

CDN技术与企业网站建设:解决疑问与明智选择

介绍CDN技术与疑问 在数字时代&#xff0c;网站是企业线上存在的门户&#xff0c;因此网站的性能和安全至关重要。为了解决一些与网站建设和性能相关的疑问&#xff0c;让我们首先来了解CDN技术。 什么是CDN技术&#xff1f; CDN&#xff0c;即内容分发网络&#xff08;Conte…

Langchain-Chatchat项目:1.2-Baichuan2项目整体介绍

由百川智能推出的新一代开源大语言模型&#xff0c;采用2.6万亿Tokens的高质量语料训练&#xff0c;在多个权威的中文、英文和多语言的通用、领域benchmark上取得同尺寸最佳的效果&#xff0c;发布包含有7B、13B的Base和经过PPO训练的Chat版本&#xff0c;并提供了Chat版本的4b…

【重拾C语言】六、批量数据组织(四)线性表—栈和队列

目录 前言 六、批量数据组织——数组 6.1~3 数组基础知识 6.4 线性表——分类与检索 6.5~7 数组初值&#xff1b;字符串、字符数组、字符串数组&#xff1b;类型定义 typedef 6.8 线性表—栈和队列 6.8.1 栈&#xff08;Stack&#xff09; 全局变量 isEmpty() isFull…

TCP原理特性详解

文章目录 可靠传输机制1.确认应答2.超时重传2.连接管理1.三次握手2.四次挥手 传输效率1.滑动窗口2.流量控制3.拥塞控制4.延时应答5.捎带应答 面向字节流粘包问题 TCP异常情况 可靠传输机制 可靠性&#xff1a;即发送方知道数据是发送成功了&#xff0c;还是失败了。 1.确认应答…

Github-使用2FA验证:使用python实现TOTP验证,python实现github的2FA验证

github新增了2FA验证了&#xff0c; 1、扫描二维码&#xff0c;获取对应字符串 或点击setup key ,获取字符串 2、使用python来生成校验码 安装&#xff1a; pip install pytop import pyotp key XKDRR4WH3LY2WXPH print(pyotp.TOTP(key).now()) 3、将生成的6个验证码&…

第一章 概述 | 计算机网络(谢希仁 第八版)

文章目录 第一章 概述重要内容计算机网络的一些相关知识互联网概述因特网的标准化工作互联网的组成计算机网络的类别计算机网络的性能指标计算机网络的体系结构——-分层次的体系结构 第一章 概述 重要内容 互联网边缘部分和核心部分的作用&#xff0c;以及分组交换的概念 计…

学习记忆——宫殿篇——记忆宫殿——记忆桩——身体——记忆星座

我们在与人攀谈的时候&#xff0c;可以从以下几个维度入手&#xff0c;如&#xff1a;年龄、星座、爱好、工作等。 两点记忆的技巧以及一点知识延伸 两点记忆技巧&#xff1a; 1、第一次见面时要创建回忆线索 2、脑中回忆交流画面&#xff0c;加深线索 一点知识延伸&#xff1…

NoSQL之Redis 主从复制配置详解及哨兵模式

目录 1 Redis 主从复制 1.1 主从复制的作用 1.2 主从复制流程 2 搭建Redis 主从复制 2.1 安装 Redis 2.2 修改 Redis 配置文件&#xff08;Master节点操作&#xff09; 2.3 修改 Redis 配置文件&#xff08;Slave节点操作&#xff09; 2.4 验证主从效果 3 Redis 哨兵模…

自动拟人对话机器人在客户服务方面起了什么作用?

在当今数字时代&#xff0c;企业不断寻求创新的方法来提升客户服务体验。随着科技的不断进步和消费者期望的提升&#xff0c;传统的客户服务方式逐渐无法满足现代消费者的需求。因此&#xff0c;许多企业正在积极探索利用新兴技术来改进客户服务&#xff0c;自动拟人对话机器人…

javaScript关于闭包的理解

首先在了解闭包之前&#xff0c;我们要了解一下环境和作用域 1.环境和作用域 日常生活中我们生活的环境由周边建设如公园&#xff0c;小区&#xff0c;超市构成的。这就构成了环境 在计算机当中环境就是一块内存的数据。 环境是有作用范围的&#xff0c;eg:武汉周边的建设一…

YOLOv8 Tensorrt部署详细介绍(小白从0到1,不会你砍我)

下载YOLOv8项目和Tensorrt部署项目 git clone https://github.com/xiaocao-tian/yolov8_tensorrt.git git clone https://github.com/ultralytics/ultralytics.git 下载yolov8s模型 在YOLOv8项目中新建weights文件夹&#xff0c;将yolov8s.pt放入 运行tensorrt项目中gen_wts…

RabbitMQ 介绍与 SpringBootAMQP使用

一、MQ概述 异步通信的优点&#xff1a; 耦合度低吞吐量提升故障隔离流量削峰 异步通信的缺点&#xff1a; 依赖于Broker的可靠性、安全性、吞吐能力架构复杂&#xff0c;业务么有明显的流程线&#xff0c;不方便追踪管理 什么是的MQ MQ&#xff08;Message Queue&#xf…

选择适合建筑公司的企业网盘平台

随着城市化进程的加速&#xff0c;越来越多的人开始关注乡村生活品质。Z公司以其标准化产品和优质资源整合&#xff0c;为回乡建房人群提供了一种全新的、高品质的整体解决方案。 Z公司深入调研了10W的回乡建房人群需求&#xff0c;组建了设计、工艺、供应链方面的专家团队&…

KUKA机器人通过直接输入法设定负载数据和附加负载数据的具体操作

KUKA机器人通过直接输入法设定负载数据和附加负载数据的具体操作 设置背景色: 工具负载数据 工具负载的定义: 工具负载数据是指所有装在机器人法兰上的负载。它是另外装在机器人上并由机器人一起移动的质量。需要输入的值有质量、重心位置、质量转动惯量以及所属的主惯性轴。…

边坡安全监测系统:守护边坡稳定的重要工具

在工程建设中&#xff0c;边坡安全监测系统一直被认为是掌握边坡安全及其支护结构维护决策系统的关键支撑条件。这一系统的主要目的在于确定边坡结构的稳定性&#xff0c;监控支护结构的承载能力、运营状态和耐久性能&#xff0c;并对边坡稳定性进行实时监控。 一、边坡安全监测…

CTF学习笔记——PWN(入门)

文章目录 [toc] CTF学习笔记——PWN&#xff08;入门&#xff09;PWN基础概念NC题[HGAME 2023 week1]test_nc 栈溢出[HNCTF 2022 Week1]easyoverflow 伪随机数[SWPUCTF 2022 新生赛]Darling 待补充待补充 CTF学习笔记——PWN&#xff08;入门&#xff09; &#x1f680;&#x…

python常用库之数据库orm框架之SQLAlchemy

文章目录 python常用库之数据库orm框架之SQLAlchemy一、什么是SQLAlchemySQLAlchemy 使用场景 二、SQLAlchemy使用SQLAlchemy根据模型查询SQLAlchemy SQL 格式化的方式db_session.query和 db_session.execute区别实测demo 总结&#xff1a;让我们留意一下SQLAlchemy 的 lazy lo…

电流,功率监控芯片INA226应用(基于STM32工程)

一芯片介绍 INA226是具有I2C™或SMBUS兼容接口的电流分流器和功率监控器。该设备同时监视并联电压降和总线电源电压。可编程的校准值&#xff0c;转换时间和平均值与内部乘法器结合使用&#xff0c;可以直接读取以安培为单位的电流和以瓦特为单位的功率。INA226感应共模总线电…

Spring【@Resource、@Autowired+lombook+Bean的生命周期】

Resource 和 Autowired 的区别 在Spring中找Bean的两种方式&#xff1a;①先根据类型查找②再根据名称查找 Autowired先根据类型查找&#xff0c;再根据名称查找【根据上述查找结果不唯一&#xff0c;再添加一个 Qualifier(value“”)&#xff0c;就可以查找】 Resource先根据名…