通过数据库表自动生成POJO(JavaBean)对象
主类:
package bqw.tool;
import java.util.ResourceBundle;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Types;
import java.io.File;
import java.io.FileWriter;
import java.sql.DatabaseMetaData;
import java.util.ArrayList;
public class DB2JavaBean {
private String driver = ""; //驱动
private String url = ""; //数据库访问串
private String userName = ""; //数据库用户名
private String password = ""; //数据库密码
private String tableName = ""; //要生成jopo对象的表名,使用;进行分割
private String tableMatchPattern = ""; //数据库表名匹配模式
private String matchPattern = ""; //是否启用数据库表名匹配模式功能,启用后tableName属性不被使用
public DB2JavaBean(){}
public DB2JavaBean(boolean init){
if(init){
ResourceBundle rb = ResourceBundle.getBundle("bqw.tool.DB2JavaBean");
this.driver = rb.getString("driver");
this.url = rb.getString("url");
this.userName = rb.getString("userName");
this.password = rb.getString("password");
this.tableName = rb.getString("tableName");
this.matchPattern = rb.getString("matchPattern");
this.tableMatchPattern = rb.getString("tableMatchPattern");
}
}
public DB2JavaBean(String baseName){
ResourceBundle rb = ResourceBundle.getBundle(baseName);
this.driver = rb.getString("driver");
this.url = rb.getString("url");
this.userName = rb.getString("userName");
this.password = rb.getString("password");
this.tableName = rb.getString("tableName");
this.tableMatchPattern = rb.getString("tableMatchPattern");
this.matchPattern = rb.getString("matchPattern");
}
public DB2JavaBean(String driver,String url,String userName,String password,String tableName,String tableMatchPattern,String matchPattern){
this.driver = driver;
this.password = password;
this.userName = userName;
this.url = url;
this.tableName = tableName;
this.tableMatchPattern = tableMatchPattern;
this.matchPattern = matchPattern;
}
public void setDriver(String driver){
this.driver = driver;
}
public void setUrl(String url){
this.url = url;
}
public void setUserName(String userName){
this.userName = userName;
}
public void setPassword(String password){
this.password = password;
}
public void setTableName(String tableName){
this.tableName = tableName;
}
public void setTableMatchPattern(String tableMatchPattern){
this.tableMatchPattern=tableMatchPattern;
}
public void setMatchPattern(String matchPattern){
this.matchPattern = matchPattern;
}
public String getDriver(){
return this.driver;
}
public String getUrl(){
return this.url;
}
public String getUserName(){
return this.userName;
}
public String getPassword(){
return this.password;
}
public String getTableName(){
return this.tableName;
}
public String getTableMatchPattern(){
return this.tableMatchPattern;
}
public String getMatchPattern(){
return this.matchPattern;
}
public void init(int ObjectTypeOrCommonlyType){
try{
Class.forName(this.driver).newInstance();
Connection conn = DriverManager.getConnection(this.url,this.userName, this.password);
String [] tables = new String[0];
ArrayList tableal = new ArrayList(20);
if("true".equals(this.matchPattern)){
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet dbmdrs = dbmd.getTables(null, this.userName.toUpperCase(), this.tableMatchPattern, new String[]{"TABLE"});
while(dbmdrs.next()){
tableal.add(dbmdrs.getString(3));
}
dbmdrs.close();
if(tableal.size()==0){
dbmdrs = dbmd.getTables(null, this.userName.toLowerCase(), this.tableMatchPattern, new String[]{"TABLE"});
while(dbmdrs.next()){
tableal.add(dbmdrs.getString(3));
}
dbmdrs.close();
}
if(tableal.size()==0){
dbmdrs = dbmd.getTables(null, this.userName, this.tableMatchPattern, new String[]{"TABLE"});
while(dbmdrs.next()){
tableal.add(dbmdrs.getString(3));
}
dbmdrs.close();
}
tables = new String[tableal.size()];
for(int ti = 0;ti
tables[ti] = tableal.get(ti);
}
}
else{
tables = this.tableName.split(";");
}
String strType;
String strName;
String className;
String [] nameSect;
StringBuilder tbn = new StringBuilder();
StringBuilder tstr1 = new StringBuilder();
StringBuilder tstr2 = new StringBuilder();
File file = new File("JavaBean");
if(!file.exists())file.mkdir();
if(!file.isDirectory())file.mkdir();
for(int i=0;i
nameSect = tables[i].split("_");
for(String ns : nameSect){
tbn.append(ns.substring(0,1).toUpperCase()+ns.substring(1).toLowerCase());
}
className = tbn.toString();
tbn.delete(0,tbn.length());
tstr1.append("import java.sql.*; ");
tstr1.append("\n");
tstr1.append("import javax.sql.*; ");
tstr1.append("\n");
tstr1.append("import java.io.*; ");
tstr1.append("\n");
tstr1.append("public class "+className+" implements Serializable{ ");
tstr1.append("\n");
try{
System.out.println(tables[i]);
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from "+tables[i]);
ResultSetMetaData rsd = rs.getMetaData();
int cc = rsd.getColumnCount();
for(int j=1;j<=cc;j++){
if(ObjectTypeOrCommonlyType == StaticVar.OBJECTTYPE){
strType = this.getObjectType(rsd.getColumnType(j));
}
else{
strType = this.getCommonlyType(j);
}
if(strType == null)continue;
strName = rsd.getColumnName(j);
tstr1.append(" private "+strType+" "+strName.toLowerCase()+";");
tstr1.append("\n");
tstr2.append(" public void set"+strName.substring(0,1).toUpperCase()+strName.substring(1).toLowerCase()+"("+strType+" "+strName.toLowerCase()+"){");
tstr2.append("\n");
tstr2.append(" this."+strName.toLowerCase()+" = "+strName.toLowerCase()+";");
tstr2.append("\n");
tstr2.append(" }");
tstr2.append("\n");
tstr2.append(" public "+strType+" get"+strName.substring(0,1).toUpperCase()+strName.substring(1).toLowerCase()+"(){");
tstr2.append("\n");
tstr2.append(" return this."+strName.toLowerCase()+";");
tstr2.append("\n");
tstr2.append(" }");
tstr2.append("\n");
}
rs.close();
statement.close();
}
catch(Exception tableE)
{
tableE.printStackTrace();
}
tstr2.append("} ");
tstr2.append("\n");
tstr1.append(tstr2.toString());
tstr1.append("\n");
file = new File("JavaBean/"+className+".java");
FileWriter fw = new FileWriter(file);
fw.write(tstr1.toString());
fw.flush();
fw.close();
tstr1.delete(0, tstr1.length());
tstr2.delete(0, tstr2.length());
}
conn.close();
}
catch(Exception driverE){
driverE.printStackTrace();
}
}
public String getObjectType(int type){
switch(type){
case Types.ARRAY:return null;
case Types.BIGINT:return "Long";
case Types.BINARY:return null;
case Types.BIT:return "Byte";
case Types.BLOB:return "Blob";
case Types.BOOLEAN:return "Boolean";
case Types.CHAR:return "String";
case Types.CLOB:return "Clob";
case Types.DATALINK:return null;
case Types.DATE:return "Date";
case Types.DECIMAL:return "Double";
case Types.DISTINCT:return null;
case Types.DOUBLE:return "Double";
case Types.FLOAT:return "Float";
case Types.INTEGER:return "Integer";
case Types.NUMERIC:return "Integer";
case Types.JAVA_OBJECT:return null;
case Types.LONGVARBINARY:return null;
case Types.LONGVARCHAR:return null;
case Types.NULL:return null;
case Types.OTHER:return null;
case Types.REAL:return null;
case Types.REF:return null;
case Types.SMALLINT:return "Short";
case Types.STRUCT:return null;
case Types.TIME:return "Time";
case Types.TIMESTAMP:return "Timestamp";
case Types.TINYINT:return "Short";
case Types.VARBINARY:return null;
case Types.VARCHAR:return "String";
default :return null;
}
}
public String getCommonlyType(int type){
switch(type){
case Types.ARRAY:return null;
case Types.BIGINT:return "long";
case Types.BINARY:return null;
case Types.BIT:return "byte";
case Types.BLOB:return "String";
case Types.BOOLEAN:return "boolean";
case Types.CHAR:return "String";
case Types.CLOB:return "String";
case Types.DATALINK:return null;
case Types.DATE:return "Date";
case Types.DECIMAL:return "double";
case Types.DISTINCT:return null;
case Types.DOUBLE:return "double";
case Types.FLOAT:return "float";
case Types.INTEGER:return "int";
case Types.NUMERIC:return "int";
case Types.JAVA_OBJECT:return null;
case Types.LONGVARBINARY:return null;
case Types.LONGVARCHAR:return null;
case Types.NULL:return null;
case Types.OTHER:return null;
case Types.REAL:return null;
case Types.REF:return null;
case Types.SMALLINT:return "short";
case Types.STRUCT:return null;
case Types.TIME:return "Time";
case Types.TIMESTAMP:return "Timestamp";
case Types.TINYINT:return "short";
case Types.VARBINARY:return null;
case Types.VARCHAR:return "String";
default :return null;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DB2JavaBean d2j = new DB2JavaBean(true);
System.out.println(d2j.getDriver());
System.out.println(d2j.getUrl());
System.out.println(d2j.getUserName());
System.out.println(d2j.getPassword());
System.out.println(d2j.getTableName());
System.out.println(d2j.getTableMatchPattern());
System.out.println(d2j.getMatchPattern());
d2j.init(StaticVar.OBJECTTYPE);
//d2j.init(StaticVar.COMMONLYTYPE);
System.out.println("OK");
}
}
静态类:
package bqw.tool;
public class StaticVar {
public static final int OBJECTTYPE = 0;
public static final int COMMONLYTYPE = 1;
}
配置文件:
#驱动
driver=org.apache.derby.jdbc.ClientDriver
#数据库访问串
url=jdbc:derby://localhost:1527/myeclipse
#用户名
userName=classiccars
#密码
password=classiccars
#需要产生pojo文件的表名,使用;号分隔
tableName=customer;employee;office;payment;
#如果matchPattern为true,则tableMatchPattern起作用,tableName不起作用
matchPattern=true
#表名匹配模式,使用like语句的匹配模式,自动选择属于此用户且表名称与tableMatchPattern匹配的表
tableMatchPattern=%
#驱动
#driver=oracle.jdbc.driver.OracleDriver
#数据库访问串
#url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#用户名
#userName=test
#密码
#password=test
#需要产生pojo文件的表名,使用;号分隔
#tableName=t_files;t_sys_wordtemplate;t_sys_wordmodel;t_sys_user;t_sys_user_dept;
#如果matchPattern为true,则tableMatchPattern起作用,tableName不起作用
#matchPattern=true
#表名匹配模式,使用like语句的匹配模式,自动选择属于此用户且表名称与tableMatchPattern匹配的表,区分大小写
#tableMatchPattern=T_%
转自:http://hi.baidu.com/bianqiwei/item/e37c4eaa913acf14a8cfb7dd
通过数据库表自动生成POJO(JavaBean)对象的更多相关文章
- Java数据库表自动转化为PO对象
本程序简单实现了数据库内省,生成PO对象. 数据库内省有如下两种实现方式: 通过mysql元表 通过desc table,show tables等命令 import java.io.IOExcepti ...
- 使用mybatis-generator-core-1.3.2.jar根据数据库表自动生成实体
1 导入mybatis-generator-core-1.3.2.jar 2配置mbg.xml <?xml version="1.0" encoding="UTF- ...
- 第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml
源码链接:https://pan.baidu.com/s/1iP4UguBufHbcIEv4Ux4wDw 提取码:j6z9 目录结构如下:只需增加一个generatorConfig.xml文件和在po ...
- Activiti 数据库表自动生成策略
Activiti 引擎启动时默认会检测数据库版本与程序版本是否相符,不相符就会抛出异常停止引擎的初始化. 这一策略可以通过引擎的初始化配置参数databaseSchemaUpdate来控制, 如下图的 ...
- 根据数据库表自动生成实体类、xml和dao---mybatis
网盘链接: https://pan.baidu.com/s/1AVGz0bDa_Y5zjk7vXa2eHw 提取码: 2gr6 1.记事本打开generatorConfig.xml文件 2(1,2,3 ...
- mybatis 逆向工程(通过数据库表针对单表自动生成mybatis执行所需要的代码)
mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml.pojo…),可以让程序员 ...
- mybits根据表自动生成 java类和mapper 文件
mybits根据表自动生成 java类和mapper 文件 我这个脑子啊,每次创建新的工程都会忘记是怎么集成mybits怎么生成mapper文件的,so today , I can't write t ...
- Idea根据表自动生成实体
Idea根据表自动生成实体: 首先说下这种方式有个缺点,就是如果表里面有日期.时间类型,那么需要手动的设置映射类型 第一步:在Idea中配置好数据库: 在Idea窗口右边,点击Database按钮 配 ...
- Go语言根据数据表自动生成model以及controller代码
手写model的用法请参考: https://www.jianshu.com/p/f5784b8c00d0 这里仅说明自动生成model文件的过程 bee generate appcode -tabl ...
随机推荐
- 第27章 项目8:使用XML-RPC进行文件共享
1.问题 创建一个简单的P2P文件共享程序. P2P文件共享程序是在不同计算机上的程序交换文件.P2P交互内,任何节点(peer)都可以是链接到其他节点.在这样一个由节点组成的虚拟网络中,是没有中央节 ...
- 3. opencv进行SIFT特征提取
opencv中sift特征提取的步骤 使用SiftFeatureDetector的detect方法检测特征存入一个向量里,并使用drawKeypoints在图中标识出来 SiftDescriptorE ...
- js中ajax异步导致的一些问题
问题1:ajax默认是异步,所以在ajax中对外面定义的变量赋值,不能正确赋值 $("form").submit( var flag; $.ajax({ type: 'GET', ...
- 无法打开物理文件xxx.mdf 操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120) 的解决方法
问题描述:在附加数据库到sql server时,附加不上,出现如下图所示的错误 解决方法:找到xxx.mdf和xxx_log.ldf文件, 点击“右键”->“属性”->"安全&q ...
- Hive基本命令整理
创建表: hive> CREATE TABLE pokes (foo INT, bar STRING); Creates a table called pokes with t ...
- java实现合并两个已经排序的列表
相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃.虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class ...
- 野指针及c++指针使用注意点
避免野指针的产生 “野指针”的成因主要有: 1)指针变量没有被初始化.任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气.所以,指针变量在创建的同时应当被初始化,要么将指 ...
- Pomodairo,番茄工作法-解刨篇
处于“信息大爆炸”的 e 时代的我们每天必定要处理很多的事情,不管是工作.学习.生活......面对这么多的纷杂的事物我们将如何应对?如何做到有条不紊的进行?高效.轻松.愉快的完成它呢?这时一款精致的 ...
- 20145120 《Java程序设计》实验一实验报告
20145120 <Java程序设计>实验一实验报告 实验名称:Java开发环境的熟悉 实验目的与要求: 1.使用JDK编译.运行简单的Java程序:(第1周学习总结) 2.编辑.编译.运 ...
- Liferay SDK 6.2与7.0中build.[$username].properties 文件的配置
这篇文章是针对刚开始开发Liferay的新手写的,希望能够帮到刚入门的开发者减少一些配置上的麻烦. 前提: 1. 下载了Liferay IDE(Liferay的官方开发工具) 2.下载了Liferay ...