Java 将数据库对应的表生成对应的实体类,包含注释信息

java根据数据库表或视图创建实体 支持oracle或mysql,输入数据库的连接信息及表名或视图名,自动根据表或视图创建实体类,非常好用的一个小程序,大大节省时间~ 立即下载

 Java 将数据库对应的表生成对应的实体类,包含注释信息 小工具

使用不同的数据需要对应数据库驱动jar包,请自行添加

/**
 * 
 */
package com.cloud.utils.temp;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.filechooser.FileSystemView;
/**
 * @author liuwei
 *
 */
public class GenEntityTable {
	
	/**
	 * 这里是Oracle连接方法
	 *private static final String driver = "oracle.jdbc.driver.OracleDriver";
	 *private static final String url = "jdbc:oracle:thin:@localhost:1521:orcl";
	 *private static final String uid = "system";
	 *private static final String pwd = "sys";
	 *这里是SQL Server连接方法
	 *private static final String url = "jdbc:sqlserver://localhost:1433;DateBaseName=数据库名";
	 *private static final String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
	 *private static final String uid = "sa";
	 *private static final String pwd = "sa";
	 *
	 *
	 * 这里是MySQL连接方法
	 */
	private static final String driver="com.mysql.jdbc.Driver";
	private static final String pwd="root";
	private static final String user="root";
	private static final String url = "jdbc:mysql://localhost/eastbeidou" + "?user=" + user + "&password=" + pwd + "&useUnicode=true&characterEncoding=UTF-8";
	private static String tablename = "t_user";// 表名
	
	private static String setpackage="com.sxdl.vo";//你的实体类所在的包的位置
	
	private static Connection getConnection=null;
	
	public static void main(String[] args) {
		FileSystemView fsv=FileSystemView.getFileSystemView();
		String path=fsv.getHomeDirectory().toString();//获取当前用户桌面路径
		getConnection=getConnections();
		try {
			DatabaseMetaData dbmd=getConnection.getMetaData();
		    ResultSet resultSet = dbmd.getTables(null, "%", "%", new String[] { "TABLE" });
		    while (resultSet.next()) {
		    	String tableName=resultSet.getString("TABLE_NAME");
		    	//System.out.println(tableName);
		    	if(tablename.equals(tableName)){//这里干掉IF可对库里面所有表直接生成
		    		//ResultSet rs =getConnection.getMetaData().getColumns(null, getXMLConfig.getSchema(),tableName.toUpperCase(), "%");//其他数据库不需要这个方法的,直接传null,这个是oracle和db2这么用
		    		ResultSet rs1 = dbmd.getColumns(null, "%", tableName, "%");
		    		ResultSet rs2 = dbmd.getColumns(null, "%", tableName, "%");
		    		File directory = new File(path+"\\"+ initcap(tablename)+".java");
					FileWriter fw = new FileWriter(directory);
					PrintWriter pw = new PrintWriter(fw);
					if(setpackage==null || setpackage==""){
						pw.write("package com.sxdl.vo;\r\n");
					}else{
						pw.write("package "+setpackage+";\r\n");
					}
					pw.write("\r\n");
					pw.write("   /**\r\n");
					pw.write("    * " + tablename + " 实体类\r\n");
					pw.write("    * " + getDate()+ " Lw\r\n");
					pw.write("    */ \r\n");
					pw.write("\r\npublic class " + initcap(tablename) + "{\r\n");
					System.out.println();
					System.out.println(tablename+"表信息:");
					System.out.println();
		    		while(rs1.next()){
		    			System.out.println("private " +sqlType2JavaType(rs1.getString("TYPE_NAME"))+"	"+rs1.getString("COLUMN_NAME")+";");
						if (directory.exists()) {
						} else {
							directory.createNewFile();
						}
						String type = sqlType2JavaType(rs1.getString("TYPE_NAME"));
						String name = rs1.getString("COLUMN_NAME");
						String remark = rs1.getString("REMARKS");
						createPrtype(pw,type,name,remark);
		    		}
		    		//提供Get和Set方法
					pw.write("\r\n");
		    		while(rs2.next()){
		    			String name = rs2.getString("COLUMN_NAME");
		    			String type = rs2.getString("TYPE_NAME");
		    			createMethod(pw,type,name);
		    		}
		    		pw.write("}\r\n");
		    		
	    			pw.flush();
					pw.close();
					System.out.println();
					System.out.println();
					System.out.println("=====注意☆信息=====");
					System.out.println();
					if(setpackage==null || setpackage=="" ||setpackage.equals("com.sxdl.vo")){
						System.out.println(" 生成成功、文件在你的桌面。但你没有设置你的实体类所在的包的位置,有可能package会出错!");
						System.out.println("找到私有属性“setpackage”来设置,默认为:com.lw.vo;");
						System.out.println();
					}else{
						System.out.println("	生成成功!文件在你的桌面。");
						System.out.println();
					}
		    	}
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}
	
	/**生成属性*/
	public static void createPrtype(PrintWriter pw,String type,String name,String remark){
		if(remark!=null && !"".equals(remark)){
			pw.write("\t/**\r\n");
			pw.write("\t*"+remark+"\r\n");
			pw.write("\t*/\r\n");
		}else{
			pw.write("\t//"+name+"\r\n");
		}
		pw.write("\tprivate " +sqlType2JavaType(type)+"	"+name+";\r\n");
	}
	
	/**生成方法*/
	public static void createMethod(PrintWriter pw,String type,String name){
		pw.write("\tpublic void set" + initcap(name) + "("+ sqlType2JavaType(type) + " " + name+ "){\r\n");
		pw.write("\t\tthis." + name + "=" + name + ";\r\n");
		pw.write("\t}\r\n");
		pw.write("\tpublic " + sqlType2JavaType(type) + " get"+ initcap(name) + "(){\r\n");
		pw.write("\t\treturn " + name + ";\r\n");
		pw.write("\t}\r\n");
		pw.write("\r\n");
	}
	
	
	// 创建数据库连接
	public static Connection getConnections() {
		try {
			Class.forName(driver);
			getConnection = DriverManager.getConnection(url, user, pwd);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return getConnection;
	}

	// 将单词字母首字母改为大写
	private static String initcap(String str) {
		char[] ch = str.toCharArray();
		if (ch[0] >= 'a' && ch[0] <= 'z') {
			ch[0] = (char) (ch[0] - 32);
		}
		return new String(ch);
	}

	// 判断属性类型
	public static String sqlType2JavaType(String sqlType) {
		String str = null;
		if (sqlType.equalsIgnoreCase("bit")) {
			str = "boolean";
		} else if (sqlType.equalsIgnoreCase("tinyint")) {
			str = "byte";
		} else if (sqlType.equalsIgnoreCase("smallint")) {
			str = "short";
		} else if (sqlType.equalsIgnoreCase("int")) {
			str = "int";
		} else if (sqlType.equalsIgnoreCase("bigint")) {
			str = "long";
		} else if (sqlType.equalsIgnoreCase("float")) {
			str = "float";
		} else if (sqlType.equalsIgnoreCase("decimal") || sqlType.equalsIgnoreCase("numeric")
				|| sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")
				|| sqlType.equalsIgnoreCase("smallmoney")) {
			str = "double";
		} else if (sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")
				|| sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")
				|| sqlType.equalsIgnoreCase("text")) {
			str = "String";
		} else if (sqlType.equalsIgnoreCase("datetime")) {
			str = "String";
		} else if (sqlType.equalsIgnoreCase("image")) {
			str = "Blod";
		}
		return str;
	}

	// 获取格式化后的时间
	private static String getDate() {
		String time = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		time = sdf.format(new Date());
		return time;
	}

}


最后结果如图,工具很简单,现在这种东西很多,感觉都麻烦,这个直接放到项目中,用的时候直接运行下就OK

Xlinx PG151 除法器IP 笔记 对Xlinx 除法器IP PG151中部分内容记录备忘。 阅读详情

相关推荐

iOS开发者必备:从越狱设备里提取IPA的三种方法(含Filza、iTools实战)

本文详细介绍了iOS开发者从越狱设备提取IPA文件的三种实用方法,包括使用Filza文件管理器、AFC2配合桌面工具以及命令行高级技术。内容涵盖环境准备、操作步骤和技术原理,帮助开发者高效获取应用包文件,适用于逆向工程、测试分析等场景。

weixin_28717969的博客 817

Java解析实体类的属性和属性注释

Java解析实体类的属性和属性注释,并生成json格式的数据,key为属性名,value为属性注释。

weixin_43165220的博客 2556

国产麒麟系统下Kettle安装避坑指南:解决aarch64架构不支持问题

本文详细解析了在国产麒麟系统上部署Kettle时遇到的aarch64架构不支持问题,提供了从获取适配的SWT库、修改启动脚本到生产环境调优的完整解决方案。文章重点解决了ARM架构与Java GUI工具的兼容性挑战,并分享了内存配置、字体显示及Carte服务部署等实战经验,助力用户在国产化环境中稳定运行ETL流程。

weixin_29197835的博客 560

java 根据表生成相应的实体类

【代码】java 根据表生成相应的实体类。

dear_zx的博客 1795

【数据降维】数据降维方法分类

数据降维基本原理是将样本点从输入空间通过线性或非线性变换映射到一个低维空间,从而获得一个关于原数据集紧致的低维表示。 数据降维工具箱drtoolbox中众多算法,这里简单做个分类。 因为很多并没有仔细了解,在此次只对八种方法做分类:主成分分析(Principal Component Analysis,PCA)、线性判别分析(Linear Discriminant Analysis,LDA)、等

小魏的修行路 6万+

SAGA GIS英文版进行地形分析,计算常用的地形因子等

SAGA GIS中文版是一款专业的自动化地球科学分析系统软件。SAGA GIS最新版界面简洁,操作简便,用户使用时输入要分割的影像,选择要计算特征的影像或者波段,设置越大,得到的斑块越大;反之,则越小,点击Okay,得到分割影像图。SAGA GIS中文版主要通过选择适合你影像的格式,加载影像。 SAGA GIS全称是System for Automated Geoscientific Analyses,是一种用于编辑空间数据的地理信息系统(GIS)计算机程序,它是免费的开源软件,SAGA GIS旨在为科学家

qq_35794085的博客 5645

SQLServer 根据表名生成实体类

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

lzf118的博客 340

DaVinciCFG实战:从ARXML配置到ADC代码生成全解析

本文详细解析了使用DaVinciCFG工具进行ADC模块配置的全过程,从ARXML文件处理到代码生成与集成。重点介绍了关键参数配置、ARXML语法规则、常见错误排查及代码优化技巧,帮助开发者掌握AUTOSAR架构下ADC驱动开发,提升汽车电子系统的可靠性。

f9g0h的博客 378

Java 根据数据库表生成实体类

最终的目标是,生成实体类的内容即可。我这里觉得使用swagger生成代码,放到最终的响应里,也是很不错的。使用的是Java11版本,用到的技术有lombok,swagger,springboot,spring-data,freemarker,druid。所以,这个项目的目的是,根据数据库中的某张表,生成与之对应的实体类。比如我们用的是JPA,要增加一些注解,额外还有lombok的一些注解。最近在做的项目,涉及到数据库的操作了,直接做的是直接调用接口,不用做存库操作。......

FBB360JAVA的博客 5282

074.多任务学习:在YOLO基础上同时进行分割、关键点检测

本文探讨了在YOLOv5模型中实现检测、分割和关键点多任务的技术方案。通过分层特征抽取策略(检测用深层、分割用浅深融合、关键点用中层)解决特征共享问题;采用不确定性加权方法自动平衡多任务损失;设计了支持三种标签的数据流处理方式;并分享了推理部署时的后处理技巧。实践表明,合理的多任务设计可以提升主任务性能,但需权衡标注成本和推理效率。最终方案选择在训练时引入分割作为辅助任务,推理时仅保留检测和关键点,实现了检测mAP提升2.3%的优化效果。

2603_95664987的博客 45

Python爬虫实战:爬取并分析电子商务平台用户评论数据

爬虫(Web Scraping)是指通过编写程序模拟浏览器行为,从网站中提取数据的过程。爬虫技术可以自动化地抓取网站上的信息,广泛应用于数据收集、价格监控、市场研究等多个领域。情感分析(Sentiment Analysis)是一种自然语言处理技术,用于确定文本的情感倾向。对于电子商务平台的评论数据,情感分析可以帮助商家了解消费者的反馈情绪,例如产品的好评、差评或中性评价。本文详细介绍了如何使用Python爬虫技术从电子商务平台抓取并分析用户评论数据。我们展示了如何通过requestsSelenium。

2201_76125261的博客 1175

java 实体建表 注释_Java 将数据库对应的表生成对应的实体类,包含注释信息

Java 将数据库对应的表生成对应的实体类,包含注释信息 小工具使用不同的数据需要对应数据库驱动jar包,请自行添加/****/package com.cloud.utils.temp;import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import java.sql.Connection;import ...

weixin_31445167的博客 728

第1章第11节:创建可容纳多行滚动文字的输入框TextEditor [SwiftUI快速入门到实战]

TextField可以让用户输入单行的文字内容,若想输入多行的文字内容,可以使用能够容纳多行滚动文字的 TextEditor。 定义一个字符串属性,用来存储用户输入的文字内容。接着定义一个布尔属性,用来标识是否弹出警告窗口,以显示用户输入的内容。 TextEditor是由UIKit中的UITextView演变而来,因此可以在init方法中,通过UITextView修改TextEditor的外观属性。 添加一个VStack视图,作为子视图的容器。 创建一个TextEditor,Te..

互动教程网[www.hdjc8.com] 832

根据数据库表结构生成相应的Java实体类

根据数据库表结构生成相应的Java实体类 思路: 1、创建数据库连接 2、获取数据库表、表注释 3、获取数据库表中字段名、字段类型、字段注释 4、构建StringBuffer缓存 5、写入文件 6、关闭连接、输入流等等 使用方式: 1、修改数据源连接信息 2、修改实体配置信息 3、测试 package GenerPro; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import

qq_43274902的博客 2624

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mysql表生成对应实体_将数据库对应的表生成对应的实体类,包含注释信息

将数据库对应的表生成对应的实体类,包含注释信息/****/package com.cloud.utils.temp;import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import java.sql.Connection;import java.sql.DatabaseMetaData;import ja...

weixin_35937871的博客 319

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

根据数据库表名生成java实体类、根据实体生成创建表语句

公司用的jpa,没有用mybatis。所以也没有用mybatis自动生成。但有些数据库表字段太多,就想着一劳永逸了 这里使用的是jdbcTemplate

程序员 1537

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Generate POJOs.groovy生成实体类模板,防止

实体类生成模板,防止idea升级导致被清空了

Hello_qjh的博客 452

mysql 自动生产java 实体类脚本

package com.example; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.*; import java.text.SimpleDateFormat.

qq_28229449的博客 279

将数据库对应的表生成对应的实体类,包含注释信息

将数据库对应的表生成对应的实体类,包含注释信息 /** * */ package com.cloud.utils.temp; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DatabaseMet...

weixin_34176694的博客 1421

java 从数据库生成表的实体类(PostgreSQL版)

前面写了生成表的实体类的MySQL数据库版,这里再贴上PostgreSQL数据库版。 注:pgsql字段类型所对应的Java类型只写了常见的部分类型,如有需要请自行修改完善sqlType2JavaType方法。 package generator; import java.io.File; import java.io.FileWriter; import java.io.IOExcept...

义龙道隐的专栏 3959

java 从数据库生成表的实体类(MySQL版)

当表多了的时候,再一张一张表去建实体类就显得很麻烦了,这时候就想着使用类似hibernate的反射机制,自动生成实体类, 实现带下划线表名自动转换为驼峰命名的类名,类型的自动转换,字段注释等,EntityHelper中目前只有一个方法是获取主键(也可以自定义自己功能)。 参考了https://blog.youkuaiyun.com/qq_34246546/article/details/81736342 ...

义龙道隐的专栏 6756

使用idea根据数据库表来生成对应的实体类

打开idea,找到database,选择想要连接的数据库类型 输入数据库连接信息,点击test connection ,出现Successful, 然后点击Apply, OK 3, idea右边会出现数据库的表, 4,选中一张表右键,进入生成实体类的脚步目录 5,进入到这里,idea左边的目录,点击进入groovy脚本文件,修改成你想要的生成格式 6,下面代码就是我的groovy脚...

手写ArrayList 3489

根据数据库表动态生成java实体类

前言,本次记录重点在读取数据库表结构,及解析转换成java实体类需要字段。 主要包含,表 列名、类型、注释的读取解析 至于代码生成,可以基于已有的代码生成模板 整合进去即可 pom: <!-- Mysql Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java&l

goxingman的博客 6601

Mybatis自动生成数据库表的实体类

第一步引入jar 第二步,配置文本文件 # 数据库驱动jar 路径 本地创库的包 drive.class.path=C:/Users/Administrator/.m2/repository/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar # 数据库连接参数 jdbc.driver=com.mysql.jdb...

华棋皓 6217

IDEA通过数据库表自动生成实体类(EasyCode)

IDEA自动生成实体类插件EasyCode,真香啊~ 只要配置了数据库,就可以通过数据库表格自动生成实体类。详细配置教程

weixin_47390965的博客 1万+
下一篇: C++ ActiveMQ实现通讯
北极心lw
博客等级 码龄10年 10粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值