package com.databi.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* 为了链接oracle数据库 生成表对应的javabean
* @author Administrator
*
*/
public class JavaBeanUtils implements Serializable{
private PreparedStatement ps = null;
private ResultSet rs = null;
private static Connection con = null;
private CallableStatement cst = null;
static class Ora{
static final String DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver";
static final String DATABASE_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
static final String DATABASE_USER = "databi";
static final String DATABASE_PASSWORD = "123456";
static final String DATABASE_TABLE = "bas_dept"; //需要生成的表名
} static class MySql{
static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://localhost/plusoft_test?useUnicode=true&characterEncoding=GBK";
static final String DATABASE_USER = "root";
static final String DATABASE_PASSWORD = "1234";
}
public static Connection getOracleConnection() {
try {
Class.forName(Ora.DRIVER_CLASS);
con=DriverManager.getConnection(Ora.DATABASE_URL,Ora.DATABASE_USER,Ora.DATABASE_PASSWORD);
return con;
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return con;
} public static Connection getMySqlConnection() {
try {
Class.forName(MySql.DRIVER_CLASS);
con=DriverManager.getConnection(MySql.DATABASE_URL,MySql.DATABASE_USER,MySql.DATABASE_PASSWORD);
return con;
} catch (Exception ex) {
ex.printStackTrace();
}
return con;
} public static List<Map> getOracleTable(String Table) throws SQLException{
getOracleConnection();
List<Map> list = new ArrayList<Map>();
try {
DatabaseMetaData m_DBMetaData = con.getMetaData();
//getColumns(java.lang.String catalog, java.lang.String schema,java.lang.String table, java.lang.String col)
ResultSet colrs = m_DBMetaData.getColumns(null,Ora.DATABASE_USER.toUpperCase(), Table.toUpperCase(),"%");
while(colrs.next()) {
Map map = new HashMap();
String columnName = colrs.getString("COLUMN_NAME");
String columnType = colrs.getString("TYPE_NAME");
int datasize = colrs.getInt("COLUMN_SIZE");
int digits = colrs.getInt("DECIMAL_DIGITS");
int nullable = colrs.getInt("NULLABLE");
String remarks = colrs.getString("REMARKS");
//System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+ nullable);
map.put("columnName", columnName);
map.put("columnType", columnType);
map.put("datasize", datasize);
map.put("remarks", remarks);
list.add(map);
// System.out.println("TABLE_CAT" + "===" + colrs.getString("TABLE_CAT"));
// System.out.println("TABLE_SCHEM" + "===" + colrs.getString("TABLE_SCHEM"));
// System.out.println("TABLE_NAME" + "===" + colrs.getString("TABLE_NAME"));
// System.out.println("COLUMN_NAME" + "===" + colrs.getString("COLUMN_NAME"));
// System.out.println("DATA_TYPE" + "===" + colrs.getString("DATA_TYPE"));
// System.out.println("TYPE_NAME" + "===" + colrs.getString("TYPE_NAME"));
// System.out.println("COLUMN_SIZE" + "===" + colrs.getString("COLUMN_SIZE"));
// System.out.println("BUFFER_LENGTH" + "===" + colrs.getString("BUFFER_LENGTH"));
// System.out.println("DECIMAL_DIGITS" + "===" + colrs.getString("DECIMAL_DIGITS"));
// System.out.println("NUM_PREC_RADIX" + "===" + colrs.getString("NUM_PREC_RADIX"));
// System.out.println("NULLABLE" + "===" + colrs.getString("NULLABLE"));
// System.out.println("REMARKS" + "===" + colrs.getString("REMARKS"));
// System.out.println("COLUMN_DEF" + "===" + colrs.getString("COLUMN_DEF"));
// System.out.println("SQL_DATA_TYPE" + "===" + colrs.getString("SQL_DATA_TYPE"));
// System.out.println("SQL_DATETIME_SUB" + "===" + colrs.getString("SQL_DATETIME_SUB"));
// System.out.println("CHAR_OCTET_LENGTH" + "===" + colrs.getString("CHAR_OCTET_LENGTH"));
// System.out.println("ORDINAL_POSITION" + "===" + colrs.getString("ORDINAL_POSITION"));
// System.out.println("IS_NULLABLE" + "===" + colrs.getString("IS_NULLABLE"));
}
// while(colRet.next()){
// System.out.print("列名:"+colRet.getString("COLUMN_NAME"));
// System.out.print(" 数据类型是:"+colRet.getString("DATA_TYPE"));
// System.out.print(" 类型名称是:"+colRet.getString("TYPE_NAME"));
// System.out.print(" 列大小是:"+colRet.getString("COLUMN_SIZE"));
// System.out.println(" 注释是:"+colRet.getString("REMARKS"));
// } } catch (Exception e) {
e.printStackTrace();
}finally{
con.close();
}
return list;
}
/**
* 把Oracle字段类型 转化为 java类型
* @param sqlType 字段类型
* @param size 字段大小
* @param scale 默认=0
* @return
*/
public static String oracleSqlType2JavaType(String sqlType,int size,int scale){
if (sqlType.equals("integer")) {
return "Integer";
} else if (sqlType.equals("long")) {
return "Long";
} else if (sqlType.equals("float")
|| sqlType.equals("float precision")
|| sqlType.equals("double")
|| sqlType.equals("double precision")
) {
return "BigDecimal";
}else if (sqlType.equals("number")
||sqlType.equals("decimal")
|| sqlType.equals("numeric")
|| sqlType.equals("real")) {
return scale==0? (size<10? "Integer" : "Long") : "BigDecimal";
}else if (sqlType.equals("varchar")
|| sqlType.equals("varchar2")
|| sqlType.equals("char")
|| sqlType.equals("nvarchar")
|| sqlType.equals("nchar")) {
return "String";
} else if (sqlType.equals("datetime")
|| sqlType.equals("date")
|| sqlType.equals("timestamp")) {
return "Date";
}
return "String";
} public static String getItems(List<Map> map,String tablename){
//记得转化成小写
StringBuffer sb = new StringBuffer();
sb.append("package com.databi.bean;");
sb.append("\r\n");
sb.append("import java.util.Date;\r\n");
sb.append("/** \r\n "
+" * \r\n"
+" * @author lsp \r\n"
+" *\r\n"
+ "*/\r\n" );
sb.append("\r\n");
sb.append("public class "+ getUpperOne(tablename.toLowerCase()) + " implements java.io.Serializable {\r\n");
//得到私有属性
for (Map map0 : map) {
String columnname = map0.get("columnName").toString();
String columntype = map0.get("columnType").toString();
String columnsize = map0.get("datasize").toString();
String remarks = map0.get("remarks")==null?"":map0.get("remarks").toString();
String javaType = oracleSqlType2JavaType(columntype.toLowerCase(),Integer.parseInt(columnsize),0);
String temp = "\tprivate "+javaType+" "+columnname.toLowerCase()+"; //"+remarks+"\r\n";
sb.append(temp);
}
//得到getter和setter
for (Map map0 : map) {
String columnname = map0.get("columnName").toString();
String columntype = map0.get("columnType").toString();
String columnsize = map0.get("datasize").toString();
String javaType = oracleSqlType2JavaType(columntype.toLowerCase(),Integer.parseInt(columnsize),0);
String temp = "\tpublic "+javaType+" "+"get"+getUpperOne(columnname.toLowerCase())+"(){\r\n";
String temp1 = "\t\treturn "+columnname.toLowerCase()+";\r\n";
String temp2 = "\t}\r\n";
sb.append(temp+temp1+temp2);
temp = "\tpublic void "+"set"+getUpperOne(columnname.toLowerCase())+"("+javaType+" "+columnname.toLowerCase()+"){\r\n";
temp1 = "\t\tthis."+columnname.toLowerCase()+" = "+columnname.toLowerCase()+";\r\n";
temp2 = "\t}\r\n";
sb.append(temp+temp1+temp2);
}
sb.append("}");
return sb.toString(); } /**
* 把输入字符串的首字母改成大写
* @param str
* @return
*/
public static String getUpperOne(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 void main(String[] args) throws IOException { //JavaBeanUtils.sysoutOracleTCloumns("pexam_items_title", "his_yhkf");
try {
String tables = "bi_bas_dept";
String[] arr = tables.split(",");
for (String string : arr) {
String name = getUpperOne(string.toLowerCase());
List<Map> map = getOracleTable(string);
String a = getItems(map,string);
File file = new File("D:\\bbb\\"+name+".java");
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file,true);//true表示在文件末尾追加
fos.write(a.getBytes());
fos.close();//流要及时关闭
}
System.out.println("生成java完成");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

链接oracle数据库 生成表对应的javabean的更多相关文章

  1. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  2. Oracle 数据库整理表碎片

    Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...

  3. 关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用

    用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理 ...

  4. ORACLE 数据库及表信息

    查看ORACLE 数据库及表信息   -- 查看ORACLE 数据库中本用户下的所有表 SELECT table_name FROM user_tables; -- 查看ORACLE 数据库中所有用户 ...

  5. Oracle数据库查看表空间sql语句

    转: Oracle数据库查看表空间sql语句 2018-09-03 15:49:51 兰海泽 阅读数 6212   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

  6. SpringBoot程序启动时在Oracle数据库中建表充值

    例子工程下载链接:https://files.cnblogs.com/files/xiandedanteng/gatling20200428-1.zip 需求:在工程启动时在Oracle数据库中建表. ...

  7. 历尽磨难之PL/SQL链接Oracle数据库

    说起来都是泪啊,上司布置的任务需要远程连接Oracle数据库,说实话这又是我人生中的第一次.我听到以后觉得不是什么大问题,然而我错了..错的很厉害! 我搞了一天一夜才弄好,这里面原因有很多,大体来讲还 ...

  8. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  9. PowerDesigner连接Oracle数据库建表序列号实现自动增长

    原文:PowerDesigner连接Oracle数据库建表序列号实现自动增长 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties — ...

随机推荐

  1. 【紫书】(UVa12096) The SetStack Computer

    突然转进到第五章的low题目的原因是做到图论了(紫书),然后惊喜的发现第一题就做不出来.那么里面用到了这一题的思想,我们就先解决这题.当然,dp必须继续做下去,这是基本功.断不得. 题意分析 这条题真 ...

  2. Linux-Shell脚本编程-学习-3-Shell编程-shell脚本基本格式

    前面两篇文章基本介绍了一部分linux下的基本命令,后面还需要大家自行了解下linux的文件系统的磁盘管理部分,这里就不在写了. 什么是shell编程,我也解释不来,什么是shell脚本了,我理解就是 ...

  3. 小程序开发时PC端调试返回结果和手机端IOS不一致问题

    IOS11登录时遇到一个请求与PC返回不一致情况, 在小程序调试时IOS上始终没有wx.request() 不能发送请求 尝试解决方法 打开微信小程序调试的设置, 将TLS设为可信任的域名 设置 -- ...

  4. JSONP跨域jQuery处理整理(附天气数据实例)

    写在前面 跨域的解决方案有多种,其中最常见的是使用同一服务器下的代理来获取远端数据,再通过ajax进行读取,而在这期间经过了两次请求过程,使得获取数据的效率大大降低,这篇文章蓝飞就为大家介绍一下解决跨 ...

  5. 修改maven远程仓库为阿里的maven仓库(复制)

    maven之一:maven安装和eclipse集成 maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍ma ...

  6. 软工实践Beta冲刺(4/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  7. QT启动一个工程

    功能描述: 模拟如下页面. 当输入一个字符串时打开对应的应用程序. 实现方法: 1. 建立工程 2. 界面编辑: 3. 在test1.h中添加slot声明 4. test1.cpp中添加slot定义 ...

  8. python practive

    定义新的操作指令,并将其组合到一起以便能够做一些有意义的事情,这就是编程工作的核心和灵魂. 计算型思维: 1,强调概念化,而非程序化.计算机科学不是计算机程序.像计算机科学家一样的思考,不只是说要编程 ...

  9. 【题解】Bzoj2125最短路

    处理仙人掌 ---> 首先建立出圆方树.则如果询问的两点 \(lca\) 为圆点,直接计算即可, 若 \(lca\) 为方点,则需要额外判断是走环的哪一侧(此时与两个点在环上的相对位置有关.) ...

  10. 【题解】SDOI2010地精部落

    强!强!强!强!劲啊劲啊劲啊!!!洛谷P2467 非常重要的,就在于发现以下的两条性质: 1.当i与i+1不相邻时,方案数是一样的:交换这两个数,<i+1的必然<i,>i+1的必然& ...