java metapojo_将数据库表转为POJO

第一步:连接数据库import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.JOptionPane;

public class DBConnection {

private static final String DBDRIVER = "com.mysql.jdbc.Driver"; //驱动类类名

private static final String DBURL = "jdbc:mysql://localhost:3306/ibatis"; //连接URL

private static final String DBUSER = "root"; //数据库用户名

private static final String DBPASSWORD = "admin"; //数据库密码

static{ //将加载驱动放到静态块中

try {

Class.forName(DBDRIVER); //加载驱动

} catch (ClassNotFoundException e1) { //发生加载驱动异常

JOptionPane.showMessageDialog(null,"加载驱动失败!!!","☆★提示信息☆★",

JOptionPane.INFORMATION_MESSAGE); //提示加载驱动失败

}

}

public static Connection getConnection() {

Connection conn = null; //建立Connection接口引用

try {

conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD); //建立连接

} catch (SQLException e) { // 发生连接异常

JOptionPane.showMessageDialog(null,"连接MySQL连接失败!!!","☆★提示信息☆★",

JOptionPane.INFORMATION_MESSAGE); //提示连接MySQL连接失败

}

return conn;

}

public static void close(Connection conn) {

if (conn != null) { //判断Connection对象是否为空

try {

conn.close(); // 关闭连接数据库资源

} catch (SQLException e){ //判断关闭Connection对象时是否发生异常

System.out.println("关闭数据库连接发生异常");

}

}

}

public static void close(Statement stmt) {

if (stmt != null){ //判断Statement对象是否为空

try {

stmt.close(); //关闭操作数据库资源

} catch (SQLException e){ //判断关闭Statement对象时是否发生异常

JOptionPane.showMessageDialog(null,"关闭数据库操作资源发生异常!!!","☆★提示信息☆★",

JOptionPane.INFORMATION_MESSAGE); //提示关闭数据库操作资源发生异常

}

}

}

public static void close(ResultSet rs) {

if (rs != null) { //判断结果集是否为空

try {

rs.close(); //关闭结果集

} catch (SQLException e){ //判断结果集是否发生异常

JOptionPane.showMessageDialog(null,"关闭结果集发生异常!!!","☆★提示信息☆★",

JOptionPane.INFORMATION_MESSAGE); //提示关闭结果集发生异常

}

}

}

}

第二步:执行转换:import java.io.File;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DatabaseMetaData;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.Types;

import org.apache.commons.dbutils.DbUtils;

public class BuildDTO {

public void build(String tableName, String packageName, String className) {

Connection conn = null;

PreparedStatement pment = null;

ResultSet rs = null;

PrintWriter pw = null;

String pack = packageName.replace(".", "/");

// 包名

System.out.println("src/" + pack + "/" + className + ".java");

try {

pw = new PrintWriter(new File("src/" + pack + "/" + className

+ ".java"));

pw.println("package " + packageName + ";\n\n");

pw.println("");

pw.println("public class " + className + " \n{\t");

// 创建连接

conn = DBConnection.getConnection();

// 构建预处理器

pment = conn.prepareStatement("select * from " + tableName

+ " where 1 = 2;");

rs = pment.executeQuery();

ResultSetMetaData metaData = rs.getMetaData();

// 获取表单的列数

int colum = metaData.getColumnCount();

for (int i = 1; i <= colum; i++) {

String pStr = ""; // setXxxx

String typeStr = ""; // 类型

// 获取列名

String columName = metaData.getColumnName(i);

// 获取每一列的数据类型

int type = metaData.getColumnType(i);

// System.out.println(i+"---"+type);

// 判断

typeStr = type(type);

// 组装 private 的语句

pStr += "private " + typeStr + " " + columName + ";";

// 输出 private 的字段

pw.println("\t" + pStr + "");

}

String constructStr = ""; // 构造

// 组装空参构造

constructStr += "public " + className + "()\n\t{\n\n\t}";

// 输出空参构造

pw.println("\n\t" + constructStr + "\n");

for (int i = 1; i <= colum; i++) {

String getStr = "";

String setStr = "";

String typeStr = "";

// 获取列名

String columName = metaData.getColumnName(i);

// 获取每一列的数据类型

int type = metaData.getColumnType(i);

// 判断

typeStr = type(type);

// 组装 set 的语句

setStr += "public void set"

+ columName.substring(0, 1).toUpperCase() + ""

+ columName.substring(1) + "(" + typeStr + " "

+ columName + ")\n\t{\n";

setStr += "\t\tthis." + columName + " = " + columName

+ ";\n\t}";

// 组装get语句

getStr += "public " + typeStr + " get"

+ columName.substring(0, 1).toUpperCase() + ""

+ columName.substring(1) + "()\n\t{\n\t";

getStr += "\treturn this." + columName + ";\n\t}";

// 输出 set

pw.println("\t" + setStr);

// 输出 get

pw.println("\t" + getStr);

}

pw.println("}");

// 缓冲

pw.flush();

pw.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

// 关闭连接

DbUtils.closeQuietly(conn, pment, rs);

}

}

public String type(int type) {

String typeStr = null;

if (Types.INTEGER == type) {

typeStr = "Integer";

} else if (Types.VARCHAR == type) {

typeStr = "String";

} else if (Types.CHAR == type) {

typeStr = "CHAR";

} else if (Types.TIMESTAMP == type) {

typeStr = "Date";

} else if (Types.INTEGER == type) {

typeStr = "Integer";

} else if (Types.LONGVARCHAR == type) {

typeStr = "String";

}

return typeStr;

}

//获取数据库中的所有表

public void getTableNameByCon(Connection con) {

try {

DatabaseMetaData meta = con.getMetaData();

ResultSet rs = meta.getTables(null, null, null,

new String[] { "TABLE" });

while (rs.next()) {

System.out.println("表名:" + rs.getString(3));

System.out.println("表所属用户名:" + rs.getString(2));

System.out.println("------------------------------");

}

con.close();

} catch (Exception e) {

try {

con.close();

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

BuildDTO dto = new BuildDTO();

dto.build("User", "com.mzsx.sql2bean", "User");

dto.getTableNameByCon(DBConnection.getConnection());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值