根据java 实体类生成建表语句
直接上代码:
package com.sql; import oa.entity.User; import java.io.File; import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; /*** * 通过java Class 创建 建表语句 */ public class CreateTable { public static Map<String, String> javaProperty2SqlColumnMap = new HashMap<>(); static { javaProperty2SqlColumnMap.put("Integer", "INTEGER"); javaProperty2SqlColumnMap.put("Short", "tinyint"); javaProperty2SqlColumnMap.put("Long", "bigint"); javaProperty2SqlColumnMap.put("BigDecimal", "decimal(19,2)"); javaProperty2SqlColumnMap.put("Double", "double precision not null"); javaProperty2SqlColumnMap.put("Float", "float"); javaProperty2SqlColumnMap.put("Boolean", "bit"); javaProperty2SqlColumnMap.put("Timestamp", "datetime"); javaProperty2SqlColumnMap.put("String", "VARCHAR(255)"); } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { createTable(User.class, null); // createTable(Book.class, null); } public static String createTable(Class obj, String tableName) throws IOException { Field[] fields = null; fields = obj.getDeclaredFields(); // Class annotationType = null; String param = null; String column = null; // XmlElement xmlElement = null; StringBuilder sb = null; sb = new StringBuilder(50); if (tableName == null || tableName.equals("")) { //未传表明默认用类名 tableName = obj.getName(); tableName = tableName.substring(tableName.lastIndexOf(".") + 1); } // sb.append("\r\ndrop table if exists ").append(tableName).append(";\r\n"); sb.append("create table ").append(tableName).append(" ( \r\n"); System.out.println(tableName); boolean firstId = true; File file = null; for (Field f : fields) { column = f.getName(); if (column.equals("serialVersionUID")) { continue; } // sb.append(column).append(" "); // System.out.println(column + "," + f.getType()); param = f.getType().getSimpleName(); sb.append(column);//一般第一个是主键 sb.append(" ").append(javaProperty2SqlColumnMap.get(param)).append(" "); /*if (param instanceof Integer) { sb.append(" INTEGER "); } else if (param instanceof Short) { sb.append(" tinyint "); } else if (param instanceof Long) { sb.append(" bigint "); } else if (param instanceof BigDecimal) { sb.append(" decimal(19,2) "); } else if (param instanceof Double) { sb.append(" double precision not null "); } else if (param instanceof Float) { sb.append(" float "); } else if (param instanceof Boolean) { sb.append(" bit "); } else if (param instanceof Timestamp) { sb.append(" datetime "); } else { sb.append(" ");//根据需要自行修改 }*/ if (firstId) {//类型转换 sb.append(" PRIMARY KEY "); firstId = false; } //获取字段中包含fieldMeta的注解 //2、获取属性上的所有注释 Annotation[] allAnnotations = f.getAnnotations(); /*for(Annotation an : allAnnotations){ sb.append(" COMMIT '"); xmlElement = (XmlElement)an; annotationType = an.annotationType(); param = ((XmlElement) an).name(); System.out.println("属性【"+f.getName()+"-----的注释类型有: " + param); sb.append(param).append("'"); }*/ sb.append(",\n "); } String sql = null; sql = sb.toString(); //去掉最后一个逗号 int lastIndex = sql.lastIndexOf(","); sql = sql.substring(0, lastIndex) + sql.substring(lastIndex + 1); sql = sql.substring(0, sql.length() - 1) + " )ENGINE =INNODB DEFAULT CHARSET= utf8;\r\n"; System.out.println("sql :" + sql); //复制到剪切板 WindowUtil.setSysClipboardText(sql); // ToastMessage.toast("复制到剪切板",2000, Color.blue); return sql; /*file = new File("WebContent/createTable/建表.txt"); if (!file.getParentFile().exists()) { if (!file.getParentFile().mkdirs()) { } } if (!file.exists()) { file.createNewFile(); } System.out.println("文件路径:"+file.getAbsolutePath()); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true))); out.write(sql) ; out.flush(); out.close() ;*/ } }
相关推荐
为了从Java实体类自动生成MySQL建表语句,开发者可以使用一些工具或库,如`JPA`的`Metamodel`API,或者开源项目如`MyBatis Generator`。这些工具能够解析Java源代码,从中提取实体类信息并生成相应的SQL语句。 4. ...
Java实现的一个idea插件,用于实体转Mysql、oracle建表语句和json请求体的工具 使用 1、安装 下载发行版,打开idea:settings->plugins->intall plugin from disk 2、使用 打开实体类,右键选择ToMysql/ToOracle/To...
4. **生成Java代码**: 根据解析到的表结构,自动生成Java实体类。每个字段对应一个Java属性,数据类型需要转换成Java兼容的类型,如`VARCHAR`转`String`,`INT`转`int`等。同时,生成对应的getter和setter方法。 5....
本篇将深入探讨如何利用注解来自动化两个关键任务:自动生成建表语句以及转换查询结果。 首先,让我们来看看如何通过注解实现自动生成建表语句。在数据库驱动的应用开发中,我们通常需要根据模型类(Model Class)...
为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表列字段转化为对应的Java实体类字段。生成的实体类字段格式清晰易读,且符合Java命名规范。通过使用该工具类,可以大大提高开发...
在Java开发中,有时我们需要处理Excel数据,例如从Excel文件中获取信息来构建数据库表结构,或者根据Excel数据生成对应的Java实体类。这个任务通常在数据导入、导出或者自动化测试场景中出现。下面我们将详细探讨...
通过使用本工具,用户可以直接输入MySQL的建表语句,工具将自动解析语句中的字段、数据类型,并生成对应的Java实体类代码。这不仅避免了手动编写实体类的繁琐工作,还减少了因人为错误导致的代码问题。 此外,该...
在实体类生成数据库表的过程中,反射被用来读取实体类的元数据,如字段名、类型等,然后根据这些信息构建出创建数据库表的SQL语句。 在实际应用中,我们可能使用Hibernate的`Hibernate Tools`或者MyBatis的`MyBatis...
mysql生成java实体类
本资源分享的是如何根据Java实体类自动创建MySQL数据库表,下面将详细介绍这一过程。 首先,我们需要一个ORM框架,例如Hibernate或MyBatis。这里以广泛使用的Hibernate为例。Hibernate是一个强大的Java持久化框架,...
本项目提供的"JAVA SQLite 自动生成实体类 源码"是一个实用工具,它能够帮助开发者自动生成与SQLite数据库表结构对应的Java实体类,从而简化数据操作的代码编写工作。 首先,我们来理解这个工具的工作原理。当...
给一个表名,自动生成java实体类,方便实用容易上手。前提,表中至少有一条数据。
因为公司之前使用JPA,先写实体类再生产数据库建表语句,这样会有一个问题,数据建表语句都是没有注释的,对于新来的同事非常不友好,同时在开发中需要看字段意义的时候也并不方便,并且字段的类型和长度都需要显示的...
Sqlbean是一款通过Java语法生成SQL语句的ORM插件,其理念是弱化在开发阶段对数据库的操作,无需先建表再开发,可直接编写实体类和业务代码,项目启动后自动创建表和维护表结构。内置大量常用方法,支持灵活的条件...
"Oracle表转实体类工具"是一种实用的开发辅助软件,它能自动化地将Oracle数据库中的表结构转换为Java实体类代码,极大地提高了开发效率。这个工具能够自动分析表的字段、数据类型,并生成对应的Java属性,同时还能...
总结,通过SpringBoot和MybatisPlus的结合,我们可以方便地从Java实体类生成数据库表结构,无需手动编写SQL脚本。这种方式对于快速构建原型或者在数据丢失后恢复表结构非常有用。在实际应用中,记得对重要数据进行...
3、新增选择实体注解功能,生成实体的时候自动为实体添加额外的注解。 4、弹出对话框界面大小调整。 5、新增数据源添加默认设置。 6、精确匹配在点更多时,已选中的表会在弹出的列表中被勾选中。 7、修复模糊...
这个名为"JAVA读取Excel,建库建表,并生成java实体.zip"的压缩包文件,显然提供了一个完整的解决方案,涵盖了从读取Excel数据到在数据库中创建表,以及根据Excel内容生成Java实体类的全过程。下面我们将详细探讨...
2. **定义实体类**:根据数据库表结构,创建对应的Java实体类,使用JPA的注解(如@Entity, @Table, @Id等)来描述实体与表的对应关系。 3. **配置Repository**:定义一个接口继承自JpaRepository,该接口将自动提供...