`

数据库表转java对象代码

阅读更多
闲的无聊,看到myeclipse自带的hibernate reverse不够给力,就自己写了个,留作纪念。
package com.qianzheni.ssh.common.engine.crepo;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class CreatePoEngine {
private String driverName="org.gjt.mm.mysql.Driver";
private String sqlUrl="jdbc:mysql://localhost:3306/test";
private String userName="root";
private String pwd="weichuang";
private Connection connection;
private DatabaseMetaData databaseMetaData;
public void initConnection(){
try {
//mysql
Class.forName(this.driverName);
this.connection=DriverManager.getConnection(this.sqlUrl,this.userName,this.pwd);
} catch (Exception e) {
System.out.println("数据库连接失败!请检查数据连接参数!");
e.printStackTrace();
}
}
public void initDatabaseMetaData(){
try {
this.initConnection();
this.databaseMetaData=this.connection.getMetaData();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void go(String fileDir,String packageName){
try {
this.initDatabaseMetaData();
ResultSet resultSet=this.databaseMetaData.getTables(null, null, null, new String[]{"TABLE"});
while (resultSet.next()) {
String tableName=resultSet.getString(3);
ResultSet columnResultSet=this.databaseMetaData.getColumns(this.connection.getCatalog(), null, tableName, "");
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(new File(
fileDir+"/"+this.reverseTableName(tableName)+".java")));
bufferedWriter.write("package "+packageName+";\r\n");
bufferedWriter.write("/**\r\n");
bufferedWriter.write(" *\r\n");
bufferedWriter.write(" * @author weichuang\r\n");
bufferedWriter.write(" * @version 0.01.01\r\n");
bufferedWriter.write(" *\r\n");
bufferedWriter.write(" */\r\n");
bufferedWriter.write("public class "+this.reverseTableName(tableName)+"{\r\n");
while (columnResultSet.next()) {
String colName=columnResultSet.getString(4);
String colType=columnResultSet.getString(6);
System.out.println(this.reverseCol(colName, colType));
bufferedWriter.write(this.reverseCol(colName, colType));
}
bufferedWriter.write("}");
bufferedWriter.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}
}
public String reverseCol(String colName,String colType){
if (colType!=null&&"int".equalsIgnoreCase(colType)) {
String name=reverseColName(colName);
String type="Integer";
return "\tprivate "+type+" "+name+";\r\n"+reverseToGetSetMethod(name, type);
}else if (colType!=null&&"varchar".equalsIgnoreCase(colType)) {
String name=reverseColName(colName);
String type="String";
return "\tprivate "+type+" "+name+";\r\n"+reverseToGetSetMethod(name, type);
}else if (colType!=null&&"datetime".equalsIgnoreCase(colType)) {
String name=reverseColName(colName);
String type="java.util.Date";
return "\tprivate "+type+" "+name+";\r\n"+reverseToGetSetMethod(name, type);
}else if (colType!=null&&"date".equalsIgnoreCase(colType)) {
String name=reverseColName(colName);
String type="java.util.Date";
return "\tprivate "+type+" "+name+";\r\n"+reverseToGetSetMethod(name, type);
}else {
throw new RuntimeException("还有没有匹配的列数据类型("+colType+")!");
}
}
public String reverseToGetSetMethod(String name,String type){
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("\tpublic "+type+" get"+Character.toUpperCase(name.charAt(0))+name.substring(1)+"(){\r\n");
stringBuilder.append("\t\treturn this."+name+";\r\n");
stringBuilder.append("\t}\r\n");
stringBuilder.append("\tpublic "+"void"+" set"+Character.toUpperCase(name.charAt(0))+name.substring(1)+"("+type+" "+name+"){\r\n");
stringBuilder.append("\t\tthis."+name+"="+name+";\r\n");
stringBuilder.append("\t}\r\n");
return stringBuilder.toString();
}
public String reverseColName(String colName){
StringBuilder stringBuilder=new StringBuilder();
String[] names=colName.split("_");
for (int i = 0; i < names.length; i++) {
String name=names[i].trim();
if (i==0) {
stringBuilder.append(name);
}else {
stringBuilder.append(Character.toUpperCase(name.charAt(0))+name.substring(1));
}
}
return stringBuilder.toString();
}
public String reverseTableName(String colName){
StringBuilder stringBuilder=new StringBuilder();
String[] names=colName.split("_");
for (int i = 0; i < names.length; i++) {
String name=names[i].trim();
stringBuilder.append(Character.toUpperCase(name.charAt(0))+name.substring(1));
}
return stringBuilder.toString();
}
public void close(){
try {
if (this.connection!=null) {
this.connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new CreatePoEngine().go("C:\\weichuang\\projects\\myeclipse\\ssh\\src\\main\\java\\com\\qianzheni\\ssh\\common\\entity"
,"com.qianzheni.ssh.common.entity");
}
}
分享到:
评论

相关推荐

    根据数据库表自动生成java代码

    "根据数据库表自动生成Java代码"是一个非常实用的功能,它允许开发者基于现有的数据库表结构快速生成对应的Java类,如DAO(Data Access Object)、XML配置文件以及实体类(Entity)。这样,开发者可以避免手动编写...

    mybaits数据库下划线转java对象的驼峰.pdf

    MyBatis数据库下划线转Java对象的驼峰命名规则 在 Java 开发中,命名规则是一个非常重要的方面。 Java 中类的命名一般使用大驼峰规则(PascalCase),属性和方法的命名一般使用小驼峰规则(camelCase)。而在数据库...

    oracle 根据数据库自动生成JAVA代码

    ORM框架简化了数据访问层的开发,使得Java对象可以直接操作数据库记录,无需手动编写SQL。 DAO层(Data Access Object)是与数据库交互的具体实现。DAO类通常包含方法,如增删查改,这些方法对应于SQL操作。通过...

    数据库实体对象转换JavaBean_数据库对象转Javabean_

    总之,数据库对象转换为Java Bean是Java开发中的常见操作,通过合理的封装和利用工具,我们可以高效地实现数据的处理和传输,提高代码的可复用性和可扩展性。在处理大量数据时,还要考虑性能优化,以确保系统的稳定...

    JAVA通过实体生成数据库表

    在Java开发中,将实体类(Entity Class)映射到数据库表是一种常见的做法,这通常涉及到ORM(Object-Relational Mapping)技术。ORM允许我们用面向对象的方式处理数据库操作,而无需编写大量的SQL语句。Java中的...

    数据库表生成javabean工具及源代码(修正版)

    数据库表生成JavaBean工具是一种非常实用的开发辅助工具,它能极大地提高开发效率,尤其是在处理大量数据模型对象时。此工具允许开发者连接到数据库,自动获取数据库中的表结构,并将其转换为符合Java Bean规范的类...

    dbtobean 源代码 数据库库表转换为java对象

    《dbtobean:数据库库表到Java对象的转换源码解析》 在软件开发过程中,数据模型的设计和实现是至关重要的一步。当涉及到数据库与应用程序之间的交互时,将数据库中的表结构映射到Java对象(通常称为Bean)是一种...

    Java根据实体创建Mysql数据库表

    在Java开发中,将对象模型(实体)映射到关系型数据库如MySQL是常见的需求,这一过程被称为对象关系映射(ORM)。ORM框架允许我们通过编程语言操作数据,而不是直接编写SQL语句,大大提高了开发效率。本资源分享的是...

    数据库表生成对应的java类

    标签“表 生成 java”进一步强调了这个工具的主要任务,它帮助开发者将数据库中的表转换成Java代码,这样开发者就可以直接在代码中操作这些对象,而无需手动编写对应的类。 压缩包中的"generator"可能是一个生成器...

    java自动生成bean 根据数据库表及字段

    在Java开发中,为了提高开发效率和代码的可维护性,常常需要将数据库表结构映射为Java对象,也就是我们常说的Bean类。这个过程通常手动编写,但随着自动化工具的发展,现在可以通过特定的工具或者库来自动生成这些...

    数据库表转实体类和DTO

    数据库表转实体类和DTO是软件开发中一个常见的任务,特别是在Java后端开发中,它涉及到数据模型的设计和数据访问层的操作。实体类(Entity Class)通常代表数据库中的表,而DTO(Data Transfer Object)则用于在不同...

    逆向生成工具,有数据库表生成java bean实体类

    在Java开发中,实体类(Entity Class)是数据模型的重要组成部分,通常用于映射数据库中的表。本工具专门针对这种情况,能够根据数据库中的表结构自动生成对应的Java Bean实体类,极大地提高了开发效率。 在使用这...

    实体类转换成数据库表

    6. **代码生成工具**: "pojo2oracle"可能是一个工具或者代码生成脚本,用于根据给定的实体类(POJO,Plain Old Java Object)生成Oracle数据库的表结构。这个工具会分析实体类的定义,并自动生成创建Oracle表的DDL...

    java代码生成器数据库表一键生成类文件

    这个小项目的核心功能在于自动化地从数据库中读取表的信息,如字段名、数据类型、主键等,然后根据这些信息生成对应的Java实体类、DAO(数据访问对象)、Service以及Mapper接口等文件。通过这种方式,开发者可以快速...

    Java比较两个mysql数据库表结构的差异

    一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...

    java比较两个mysql数据库中的表信息差异

    一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...

    java代码创建数据库

    通过JDBC,我们可以在Java程序中执行SQL语句,如创建数据库、表,以及插入、更新和查询数据。 2. **必备库** 创建SQL Server数据库时,需要一个JDBC驱动。在这个例子中,使用的驱动是`jtds-1.2.2.jar`。JTDS是一个...

    java判断数据库表是否存在

    ### Java判断数据库表是否存在 在Java开发中,经常会遇到需要检查特定表是否存在于数据库中的情况。这通常是数据库操作流程中的一个重要环节,确保后续的操作(如插入、更新或删除数据)能够顺利进行。本文将详细...

    计算机专业数据库课程设计 java源代码

    至于"代码成品",这部分可能包含了完成上述功能的Java源代码文件,例如数据访问对象(DAO)层的实现,用于封装数据库操作;业务逻辑层(Service)的代码,处理业务规则和流程;以及可能的控制层(Controller)代码,...

    java如何获得数据库表中各字段的字段名

    这通常在动态生成报表或者需要根据数据库结构动态创建Java对象时非常有用。 #### 基本原理 要实现这一功能,主要依靠`java.sql.ResultSetMetaData`类来获取元数据信息。通过执行SQL查询语句(如`SELECT * FROM ...

Global site tag (gtag.js) - Google Analytics