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.自定义模板新增模板目录,可以选择不同分类目录下的模 ...
随机推荐
- Swift 入门之简单语法(一)
定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 //: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下 ...
- Jedis-returnResource使用注意事项
遇到过这样一个严重问题: 发布的项目不知从什么时候开始,每月会出现一两次串号问题.串号现象指的是,用户用账号A登录系统,然后某个时间,登录账号自动变成了B. 串号出现的时间不定,测试平台难以重现,且后 ...
- PHP中的函数声明与使用
函数 1. 函数名是标识符之一,只能有字母数字下划线,开头不能是数字: 函数名的命名,必须符合&quo ...
- 2016计蒜之道复赛B题:联想专卖店促销
题解 思路: 二分答案,设我们要check的值为x. 注意到每一个礼包都有,一个U盘,一个鼠标. 剩余的,分别为一个机械键盘,一个U盘,一个鼠标. 当礼包数目为x时,我们至多可以提供a-x个普通,b- ...
- JDBC连接数据库程序
废话少说,看了尚学堂的视频以及某大神的博客,总结出以下.(本文以oracle数据库为例) 创建一个JDBC连接数据库的程序,需要着手做以下几件事情: 注意,这里边使用了java.sql.Stateme ...
- java设计模式之 装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构. 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装 ...
- 网购的一套UI代码的始末
引言: 一个商业项目的需要,又因为时间紧迫的关系,准备购买一套简洁,易用,可定制化强的UI,经过对国内外多家UI产品进行了对比, 包括:FineUI, EasyUI, EXT.NET, EXTJS, ...
- MVC架构简介及其测试策略
最近在WEB端测试工作中陷入了瓶颈,单纯的手动功能测试在没有成熟的代码规范之前还是很容易坑的,WEB自动化测试一时半会还没有什么进展,所以决定先学习一下网站用的MVC架构,跟着教程写了一个小网站,大概 ...
- ecshop支付方式含线下自提
用户展示页面模板所在:如ecshop/theme/default/flow.dwt 后台管理展示页面模板所在:如admin/templates/payment_list.htm ecshop 支付接口 ...
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...