第一步:连接数据库

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());
}
}