闲着没事,写了一个从表生成javabean的工具类,大家可以在此基础进行发散。
?
第一步建立jdbc数据库连接
/**
* 获取连接
* @return
*/
public static Connection getConnection(){
try {
Class.forName("oracle.jdbc.OracleDriver");
String url = "jdbc:oracle:thin:@10.20.128.115:1526:d0rsapp";
String username = "elisdata";
String password = "ilovetong";
return DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
?第二步:获取表结构信息
/**
* 获取某个表的表结构
* @param tableName
* @return
*/
public static List<Map<String,Object>> getTableStructure(String tableName){
List<Map<String,Object>> structureList = new ArrayList<Map<String,Object>>();
try {
DatabaseMetaData metaData = getConnection().getMetaData();
//获取数据库产品类型
String databaseProductName = metaData.getDatabaseProductName();
//结构获取方式
Statement statement = getConnection().createStatement();
ResultSet rs = statement.executeQuery("select * from "+tableName);
ResultSetMetaData rsmd = rs.getMetaData();
System.out.println(rsmd.getColumnCount());
Map<String,Object> structure = null;
for (int i = 0; i < rsmd.getColumnCount(); i++) {
structure = new HashMap<String, Object>();
String columnName = rsmd.getColumnName(i+1);
String fieldName = getFieldName(columnName);
String className = rsmd.getColumnClassName(i+1);
String fieldType = Class.forName(className).getSimpleName();
fieldType = getFieldType(fieldType);
structure.put("columnName", columnName);
structure.put("fieldName", fieldName);
structure.put("fieldType", fieldType);
structure.put("columnClassName", rsmd.getColumnClassName(i+1));
structure.put("columnDisplaySize", rsmd.getColumnDisplaySize(i+1));
structureList.add(structure);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return structureList;
}
private static String getFieldType(String fieldType) {
if("Timestamp".equals(fieldType)){
return "String";
}else if("BigDecimal".equals(fieldType)){
return "BigDecimal";
}
return "String";
}
/**
* 将数据库字段转换成bean属性
* @param columnName
* @return
*/
private static String getFieldName(String columnName) {
char[] columnCharArr = columnName.toLowerCase().toCharArray();
StringBuffer sb = new StringBuffer();
int ad = -1;
for (int i = 0; i < columnCharArr.length; i++) {
char cur = columnCharArr[i];
if(cur==‘_‘){
ad = i;
}else{
if((ad+1)==i&&ad!=-1){
sb.append(Character.toUpperCase(cur));
}else{
sb.append(cur);
}
ad=-1;
}
}
return sb.toString();
}
?第三,生成javaBean
/**
* 从表结构中去生成javabean
* @param structureList
* @param beanName
* @return
*/
public static String genJavaBeanFromTableStructure(List<Map<String,Object>> structureList,String beanName){
StringBuffer sb = new StringBuffer();
try {
sb.append("public class "+toFirstCharUpCase(beanName)+" {\r\n");
for (Map<String, Object> structure : structureList) {
sb.append(" private "+structure.get("fieldType")+" "+structure.get("fieldName")+";\r\n");
}
sb.append("\r\n");
//get set
for (Map<String, Object> structure : structureList) {
sb.append(
"\tpublic String get"+toFirstCharUpCase((String) structure.get("fieldName"))+"() {\r\n" +
"\t\treturn "+structure.get("fieldName")+";\r\n" +
"\t}\r\n" +
"\r\n" +
"\tpublic void set"+toFirstCharUpCase((String) structure.get("fieldName"))+"(String "+structure.get("fieldName")+") {\r\n" +
"\t\t"+structure.get("fieldName")+" = "+structure.get("fieldName")+";\r\n" +
"\t}\r\n\r\n");
}
sb.append("}\r\n");
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
public static String toFirstCharUpCase(String str){
char[] columnCharArr = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < columnCharArr.length; i++) {
char cur = columnCharArr[i];
if(i==0){
sb.append(Character.toUpperCase(cur));
}else{
sb.append(cur);
}
}
return sb.toString();
}
?最后:测试结果
public static void main(String[] args) {
System.out.println(getConnection());
List<Map<String,Object>> structureList = getTableStructure("t_user");
String beanName = getFieldName("t_user".replace("t_", ""));
System.out.println(genJavaBeanFromTableStructure(structureList,beanName));
}
?
原文:http://lushuifa.iteye.com/blog/2312674