package com.batch.tabletojava

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List; public class Table2JavaBean {
private static final String TAB = "\t";
private static final String LINE = "\r\n"; public static void main(String[] args) { try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = null;
String jdbcString = "jdbc:oracle:thin:@localhost:1521:xe";
conn = DriverManager.getConnection(jdbcString, "oracle", "oracle");
List<String> tableList = new ArrayList<String>();
tableList = getTableList(conn); for(String s: tableList){
makeJavaBean(conn, s);
System.out.println(s);
} }catch(Exception e){
e.printStackTrace();
} } private static void makeJavaBean( Connection conn ,String tableID) { FileOutputStream fo = null;
DataOutputStream ds = null;
File file = new File("c:\\tableBean\\" + tableID + ".java");
String sql = "select * from " + tableID + " where 1<>1";
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
ResultSetMetaData md = rs.getMetaData();
String tableName = getTableName(conn, tableID);
int columnCount = md.getColumnCount();
tableID = tableID.substring(0, 1).toUpperCase()
+ tableID.substring(1);
StringBuffer buff = new StringBuffer(); buff.append("/*----------------------------------------------------------------------------------------");
buff.append(LINE);
buff.append("Program Name | " + tableID + ".java");
buff.append(LINE);
buff.append("Language | Java");
buff.append(LINE);
buff.append("Name | " + tableName + "类");
buff.append(LINE);
buff.append("Preparation person | XX.XXX (XXXXX) 2013/12/20");
buff.append(LINE);
buff.append("Note |");
buff.append(LINE);
buff.append("------------------------------------------------------------------------------------------");
buff.append(LINE);
buff.append("2013-12-20 | Original Source Release by XX.XXX (XXXX)");
buff.append(LINE);
buff.append("------------------------------------------------------------------------------------------*/");
buff.append(LINE);
buff.append("package com.batch.common;");
buff.append(LINE);
buff.append(" ");
buff.append(LINE);
buff.append("/**");
buff.append(LINE);
buff.append(" * " + tableName + "类.");
buff.append(LINE);
buff.append(" * ");
buff.append(LINE);
buff.append(" * @author XX.XXX");
buff.append(LINE);
buff.append(" */");
buff.append(LINE); buff.append("public class " + tableID + " extends WWUMTCOMMON {");
buff.append(LINE);
for (int i = 1; i <= columnCount; i++) {
if("ZZ".equals(md.getColumnName(i).substring(0,2))){
continue;
}
// 取得字段注释
String columnComment = getColumnComment(conn, tableID, md.getColumnName(i));
String columnID = makeColumnID(md.getColumnName(i));
buff.append(TAB).append("/** "+columnComment+". */");
buff.append(LINE);
buff.append(TAB);
buff.append("private "
+ Table2JavaBean.toType(md.getColumnTypeName(i)) + " "
+ columnID.substring(0,1).toLowerCase()
+ columnID.substring(1)+ ";");
buff.append(LINE);
} for (int i = 1; i <= columnCount; i++) {
if("ZZ".equals(md.getColumnName(i).substring(0,2))){
continue;
}
// 取得字段注释
String columnComment = getColumnComment(conn, tableID, md.getColumnName(i));
buff.append(TAB);
String pojiType = Table2JavaBean
.toType(md.getColumnTypeName(i));
String columnName = makeColumnID(md.getColumnName(i));
columnName = columnName.substring(0, 1).toLowerCase()
+ columnName.substring(1);
String getName = null;
String setName = null;
if (columnName.length() > 1) {
// get
buff.append(LINE).append(TAB).append("/** ");
buff.append(LINE).append(TAB).append(" * 获取" +columnComment+"。");
buff.append(LINE).append(TAB).append(" * @return "+columnName +" " + columnComment);
buff.append(LINE).append(TAB).append(" */"); getName = "public " + pojiType + " get"
+ columnName.substring(0, 1).toUpperCase()
+ columnName.substring(1) + "() {"; buff.append(LINE).append(TAB).append(getName);
buff.append(LINE).append(TAB).append(TAB);
buff.append("return " + columnName + ";");
buff.append(LINE).append(TAB).append("}");
buff.append(LINE); // set
setName = "public void set"
+ columnName.substring(0, 1).toUpperCase()
+ columnName.substring(1) + "("
+ pojiType + " " + columnName + ") {";
buff.append(LINE).append(TAB).append("/** ");
buff.append(LINE).append(TAB).append(" * 设定"+ columnComment+"。 ");
buff.append(LINE).append(TAB).append(" * @param "+columnName +" " + columnComment);
buff.append(LINE).append(TAB).append(" */");
buff.append(LINE).append(TAB).append(setName);
buff.append(LINE).append(TAB).append(TAB);
buff.append("this." + columnName + " = " + columnName + ";");
buff.append(LINE).append(TAB).append("}");
buff.append(LINE);
}
}
buff.append("}").append(LINE);
fo = new FileOutputStream(file);
ds = new DataOutputStream(fo);
ds.write(buff.toString().getBytes()); }catch(Exception e){
e.printStackTrace();
} finally{
try{
if(ds != null){
ds.flush();
ds.close();
}
if(fo != null){
fo.close();
}
if(rs != null){
rs.close();
}
if(ps != null){
ps.close();
} }catch (Exception e){
e.printStackTrace();
}
}
} private static String makeColumnID(String columnID) {
String[] strs = columnID.toLowerCase().split("_");
StringBuffer sb = new StringBuffer();
for(int i = 0; i<strs.length; i++){
try{
sb.append(strs[i].substring(0, 1).toUpperCase() + strs[i].substring(1).toLowerCase());
}catch(Exception e){
e.printStackTrace();
System.out.println(columnID);
} } return sb.toString();
} private static String getColumnComment(Connection conn, String tableID, String columnID){
String columnName = "";
// USER_TAB_COLUMNS
String sql = "select COMMENTS from USER_COL_COMMENTS where TABLE_NAME = ? and COLUMN_NAME = ?";
PreparedStatement ps = null;
ResultSet rs = null;
try{
ps = conn.prepareStatement(sql);
ps.setString(1, tableID);
ps.setString(2, columnID);
rs = ps.executeQuery(); while (rs.next()) {
columnName = rs.getString("COMMENTS");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
}
if(ps != null){
ps.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return columnName;
} private static List<String> getTableList(Connection conn ){
try{}catch(Exception e){}
List<String> tableList = new ArrayList<String>();
// USER_TAB_COLUMNS
String sql = "select distinct TABLE_NAME from USER_TAB_COLUMNS";
// System.out.println(sql);
PreparedStatement ps = null;
ResultSet rs = null;
try{
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
String tableID = "";
while (rs.next()) {
tableID = rs.getString("TABLE_NAME");
// System.out.println(tableID);
tableList.add(tableID);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
}
if(ps != null){
ps.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return tableList;
} private static String getTableName(Connection conn ,String tableID) throws Exception{
String tableName = "";
// USER_TAB_COLUMNS
String sql = "select COMMENTS from USER_TAB_COMMENTS where TABLE_NAME = ?";
PreparedStatement ps = null;
ResultSet rs = null;
ps = conn.prepareStatement(sql);
ps.setString(1, tableID);
rs = ps.executeQuery(); while (rs.next()) {
tableName = rs.getString("COMMENTS");
rs.close();
return tableName;
}
return tableName;
} public static String toType(String str){
String result = null;
if(str.startsWith("VARCHAR2") || str.startsWith("CHAR")){
result = "String";
}else if(str.startsWith("NUMBER")){
result = "int";
}else if(str.startsWith("DATE")){
result = "Date";
}
return result;
} }

  网上查到很多关于java做成数据库表javabean的例子,但是都没有自动生成注释。

在网上查到的例子的基础上,改写了一下。发帖备份。

Oracle表生成JavaBean的更多相关文章

  1. java工具类–自动将数据库表生成javabean

    最近和数据库的表打交道挺多的,因为暂时做的是接口活. 在这过程中发现要把表转换成对应的javabean类型,字段少的表还行,如果不小心碰到几十个字段的他妈的写起来就有点麻烦了,万一碰到几百个的呢,那不 ...

  2. mysql表生成JavaBean

    MySQLToBean.java package org.just.util; import java.io.File; import java.io.FileInputStream; import ...

  3. 用generator 根据oracle表生成java代码,数据库与代码字段不一致

    前两天用generator生成java代码时发现,生成的javabean和数据库里的字段对应不上,不是少几个就是有几个字段不一样,感觉很怪异,后来发现日志里边这个表转换成bean是日志打印了好几遍,所 ...

  4. 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第2版)

             目录:                 第1版:http://blog.csdn.net/vipbooks/article/details/51912143              ...

  5. Oracle表结构转Mysql表结构

    1. fnc_table_to_mysql 主体程序 create or replace function fnc_table_to_mysql ( i_owner in string, i_tabl ...

  6. 链接oracle数据库 生成表对应的javabean

    package com.databi.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOExc ...

  7. 【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp

    一.本人环境描述      1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0      2.Linux为centos6.5 32位,安装在Oracle VM Vir ...

  8. 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

            目录:            第1版:http://blog.csdn.net/vipbooks/article/details/51912143            第2版:htt ...

  9. 基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版)

    TableGo v5.8.8版震撼发布,此次版本更新如下:          1.新增两个扩展字段,用于生成自定义模板时使用.          2.自定义模板新增模板目录,可以选择不同分类目录下的模 ...

随机推荐

  1. Android Weekly Notes Issue #258

    Android Weekly Issue #258 May 21st, 2017 Android Weekly Issue #258 本期内容: 围绕着Google I/O的热潮, 本周的posts除 ...

  2. React模块化开发

    借助前端构建工具webpack 1.webpack是facebook为react量身打造的构建工具 2.主要作用是实现模块化,代码整合,代码分割的作用 3.使用webpack整合以后 也不需要使用br ...

  3. 设置Intellij IDEA 提示出未保存的*星号

    IDEA实乃是java开发的神器,然而从eclipse或者MyEclipse转过来的开发每写完一行代码总是习惯的按下ctrl+s,然而IDEA代码编辑器的上方并没有提示未保存的*星号,提示星星,所以觉 ...

  4. Hadoop集群搭建(非HA)

    1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...

  5. spring管理配置文件的工厂类--PropertiesFactoryBean

    使用这个工厂的配置,可以很方便的获取配置文件中的属性.具体使用如下; 对于属性配置,一般采用的是键值对的形式,如: key=value 属性配置文件一般使用的是XXX.properties,当然有时候 ...

  6. 基于angular实现模拟微信小程序swiper组件

    这段时间的主业是完成一个家政类小程序,终于是过审核发布了.不得不说微信的这个小程序生态还是颇有想法的,抛开他现有的一些问题不说,其提供的组件系统乍一看还是蛮酷的.比如其提供的一个叫swiper的视图组 ...

  7. linux系统必学-部分链接

    vi操作笔记 vim操作笔记 好网站,临时收藏  SEO十万个为什么 9RIA.com天地会--中国最大的专业Flash论坛 ===互联网=============================== ...

  8. linux--centos服务器配置

    配置Centos服务器   1. 安装centos 安装时注意分区留下一个/data区给网站内容存储. 2. 配置网络连接 默认centos网络连接不是开机启动的,需要配置. vi /etc/sysc ...

  9. MVC架构简介及其测试策略

    最近在WEB端测试工作中陷入了瓶颈,单纯的手动功能测试在没有成熟的代码规范之前还是很容易坑的,WEB自动化测试一时半会还没有什么进展,所以决定先学习一下网站用的MVC架构,跟着教程写了一个小网站,大概 ...

  10. Caused by: java.lang.RuntimeException: by java.lang.OutOfMemoryError: PermGen space(tomcat 启动时提示内存溢出)

    设置MaxPermSize大小TOMCAT_HOME/bin/catalina.bat 文件头加set JAVA_OPTS='-Xms512m -Xmx1024m -XX:MaxPermSize=51 ...