在开发有规律可言,且生成如Dao,Bean,Service,等较多但格式基本同意的java文件时,建议采用
自动生成的方式,可减少因来回复制黏贴所带来的错误。
在处理数据量比较大,但又规律时,也建议采用自动生成的形式,以减少错误。
通过数据库内表的字段动态生成
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtil
{
/**
* 加载驱动
*
* 使用的是 SQL2005 的驱动程序因此务必将2005的驱动架包引入或置于项目根目录下
*
* @return
*/
public static Connection getConnection()
{
Connection con = null;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;databasename=studentDB",
"sa", "");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
return con;
}
/**
* 关闭连接的方法
*
* @param rs
* @param pstm
* @param con
*/
public static void closeAll(ResultSet rs, PreparedStatement pstm,
Connection con)
{
try
{
if (null != rs)
rs.close();
if (null != pstm)
pstm.close();
if (null != con)
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
//-----------------------------------------------开发的工具类---------------------------------------------
package com.zhou.util;
import java.io.File;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Types;
public class BuildDTO
{
public void build(String tableName)
{
Connection conn = null;
PreparedStatement pment = null;
ResultSet rs = null;
PrintWriter pw = null;
try
{
pw = new PrintWriter(new File("src/com/zhou/bean/StudentBean.java"));
pw.println("package com.zhou.bean;/n/n");
pw.println("/**");
pw.println("* 通过数据库内表的字段动态生成 javabean");
pw.println("**/");
pw.println("public class StudentBean /n{/t");
//创建连接
conn = DBUtil.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);
//判断
if(Types.INTEGER == type)
{
typeStr = "Integer";
}
else if(Types.VARCHAR == type)
{
typeStr = "String";
}
//组装 private 的语句
pStr += "private "+typeStr+" "+columName+";";
//输出 private 的字段
pw.println("/t"+pStr+"");
}
String constructStr = ""; //构造
//组装空参构造
constructStr += "public StudentBean()/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);
//判断
if(Types.INTEGER == type)
{
typeStr = "Integer";
}
else if(Types.VARCHAR == type)
{
typeStr = "String";
}
//组装 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
{
//关闭连接
DBUtil.closeAll(rs, pment, conn);
}
}
public static void main(String[] args)
{
BuildDTO dto = new BuildDTO();
dto.build("studentInfo");
}
}
//-----------------------------------------------运行结果---------------------------------------------
package com.zhou.bean;
/**
* 通过数据库内表的字段动态生成 javabean
**/
public class StudentBean
{
private Integer stuID;
private String stuName;
private String stuAge;
private String stuGender;
private String stuAdress;
private String stuDec;
public StudentBean()
{
}
public void setStuID(Integer stuID)
{
this.stuID = stuID;
}
public Integer getStuID()
{
return this.stuID;
}
public void setStuName(String stuName)
{
this.stuName = stuName;
}
public String getStuName()
{
return this.stuName;
}
public void setStuAge(String stuAge)
{
this.stuAge = stuAge;
}
public String getStuAge()
{
return this.stuAge;
}
public void setStuGender(String stuGender)
{
this.stuGender = stuGender;
}
public String getStuGender()
{
return this.stuGender;
}
public void setStuAdress(String stuAdress)
{
this.stuAdress = stuAdress;
}
public String getStuAdress()
{
return this.stuAdress;
}
public void setStuDec(String stuDec)
{
this.stuDec = stuDec;
}
public String getStuDec()
{
return this.stuDec;
}
}