Oracle表生成JavaBean
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的更多相关文章
- java工具类–自动将数据库表生成javabean
最近和数据库的表打交道挺多的,因为暂时做的是接口活. 在这过程中发现要把表转换成对应的javabean类型,字段少的表还行,如果不小心碰到几十个字段的他妈的写起来就有点麻烦了,万一碰到几百个的呢,那不 ...
- mysql表生成JavaBean
MySQLToBean.java package org.just.util; import java.io.File; import java.io.FileInputStream; import ...
- 用generator 根据oracle表生成java代码,数据库与代码字段不一致
前两天用generator生成java代码时发现,生成的javabean和数据库里的字段对应不上,不是少几个就是有几个字段不一样,感觉很怪异,后来发现日志里边这个表转换成bean是日志打印了好几遍,所 ...
- 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第2版)
目录: 第1版:http://blog.csdn.net/vipbooks/article/details/51912143 ...
- Oracle表结构转Mysql表结构
1. fnc_table_to_mysql 主体程序 create or replace function fnc_table_to_mysql ( i_owner in string, i_tabl ...
- 链接oracle数据库 生成表对应的javabean
package com.databi.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOExc ...
- 【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp
一.本人环境描述 1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0 2.Linux为centos6.5 32位,安装在Oracle VM Vir ...
- 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)
目录: 第1版:http://blog.csdn.net/vipbooks/article/details/51912143 第2版:htt ...
- 基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版)
TableGo v5.8.8版震撼发布,此次版本更新如下: 1.新增两个扩展字段,用于生成自定义模板时使用. 2.自定义模板新增模板目录,可以选择不同分类目录下的模 ...
随机推荐
- 关于在Mac OS下安装npm与cnpm的ERR! Darwin 15.0.0解决办法
mac os安装好了很久了,不过没怎么用,昨天想要体验一下大神们推荐的黑苹果系统用起来怎么样(关于安装黑苹果的可以到我的简书去看相关文章),于是乎,打开久违的vmware,看着咬一口的苹果进度图,心中 ...
- 20个php框架
对于Web开发者来说,PHP是一款非常强大而又受欢迎的编程语言.世界上很多顶级的网站都是基于PHP开发的.本文我们来回顾一下20个2014年最优秀的PHP框架. 每一个开发者都知道,拥有一个强大的框架 ...
- VR全景智慧城市——宣传再华丽,不如用户亲身参与
在当今社会上,VR和AI已经成为黑科技的代名词了.同样都是很热门的科技,但是它们的出场方式却差距不小.AI的出场方式是很有科技范,而VR的出场方式却是土豪气十足. 营销是什么,是通过制造爆点,用爆点实 ...
- hdu5803
hdu5803 题意 给出四个整数 A B C D,问有多少个四元组 (a, b, c, d) 使 a + c > b + d 且 a + d >= b + c ,0 <= a &l ...
- Pycon 2017: Python可视化库大全
本文首发于微信公众号“Python数据之道” 前言 本文主要摘录自 pycon 2017大会的一个演讲,同时结合自己的一些理解. pycon 2017的相关演讲主题是“The Python Visua ...
- Thrift中required和optional
最近在搞Thrift,对其字段声明中的required关键字有所误解,仔细调试了一下才明白其真实含义. required的意思不是说声明对象时,必须填这个值,而是Thrift在传输(序列化)过程中无论 ...
- rabbitmq 死信邮箱配置(dead-letter)
DLX,Dead-Letter-Exchange(死信邮箱)利用DLX,当消息在一个队列中变成死信后,它能被重新publish到另一个Exchange,这个Exchange就是DLX.消息变成死信一向 ...
- LeetCode 206 单链表翻转
https://leetcode.com/problems/reverse-linked-list/ 思路很简单,分别设置三个结点,之后依次调整结点1和结点2的指向关系. Before: pre -& ...
- python网络爬虫之LXML与HTMLParser
Python lxml包用于解析html和XML文件,个人觉得比beautifulsoup要更灵活些 Lxml中的路径表达式如下: 在下面的表格中,我们已列出了一些路径表达式以及表达式的结果: 路径表 ...
- C++之const限定符
作者:tongqingliu 转载请注明出处: C++之const限定符 const初始化 const的特点: 用const加以限定的变量,无法改变. 由于const对象定义之后就无法改变,所以必须对 ...