1.與數(shù)據(jù)庫(kù)建立連接
在DBUtil中設(shè)置數(shù)據(jù)庫(kù)相關(guān)的參數(shù)
Class.forName(driverName);
conn = DriverManager.getConnection(url, user, password);
2.獲得數(shù)據(jù)庫(kù)中的所有表
Mapmaps = new HashMap();
PreparedStatement pstate = conn.prepareStatement("show table status");
ResultSet results = pstate.executeQuery();
while (results.next()) {
String tableName = results.getString("NAME");
String comment = results.getString("COMMENT");
maps.put(tableName, comment);
}
3.獲得每個(gè)表中的信息
封裝一個(gè)實(shí)體來(lái)存儲(chǔ)表中的信息
PreparedStatement pstate = conn.prepareStatement("show full fields from "? ? ? ? + tableName);? ??
ResultSet results = pstate.executeQuery();? ??
List ?lists = new ArrayList();
while (results.next()) {
Column column = new Column();
String field = results.getString("FIELD");
column.setFeildMapper(field);
String fieldName = processField(field);
column.setFeild(fieldName);
String type = processType(results.getString("TYPE"));
String comment = results.getString("COMMENT");
column.setType(type);
column.setComment(comment);
lists.add(column);
}
4.拼串輸出
將固定代碼中需要變動(dòng)的字段從實(shí)體中取拼串寫(xiě)入文檔中
例如給表生成po:
public class WritePo {? ??
public static void createPo(String path,String packageName,String upTable, String lowTable, List columns) throws IOException {
File folder = new File(path + lowTable + "/po");
if (!folder.exists()) {
folder.mkdirs();
}
File beanFile = new File(folder + "/" + upTable + ".java");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(beanFile)));
bw.write("package "+packageName+lowTable+".po;");
bw.newLine();
bw.write("import java.io.Serializable;");
bw.newLine();
// bw.write("import lombok.Data;");
// bw.write("import javax.persistence.Entity;");
bw.newLine();
bw.write("@SuppressWarnings(\"serial\")");
bw.newLine();
// bw.write("@Entity");
// bw.write("@Data");
// bw.newLine();
bw.write("public class " + upTable + " implements Serializable {");
bw.newLine();
bw.newLine();
int size = columns.size();
for (Column vo : columns) {
// bw.write("\t/**" + comments.get(i) + "**/");
bw.write("\t/**");
bw.newLine();
bw.write("\t *" + vo.getComment());
bw.newLine();
bw.write("\t **/");
bw.newLine();
bw.write("\tprivate " + vo.getType() + " " + vo.getFeild() + ";");
bw.newLine();
bw.newLine();
}
bw.newLine();
// 生成get 和 set方法
String tempField = null;
String _tempField = null;
String tempType = null;
for (Column vo : columns) {
tempType = vo.getType();
_tempField = vo.getFeild();
tempField = _tempField.substring(0, 1).toUpperCase()
+ _tempField.substring(1);
bw.newLine();
// bw.write("\tpublic void set" + tempField + "(" + tempType + " _" +
// _tempField + "){");
bw.write("\tpublic void set" + tempField + "(" + tempType + " "
+ _tempField + "){");
bw.newLine();
// bw.write("\t\tthis." + _tempField + "=_" + _tempField + ";");
bw.write("\t\tthis." + _tempField + " = " + _tempField + ";");
bw.newLine();
bw.write("\t}");
bw.newLine();
bw.newLine();
bw.write("\tpublic " + tempType + " get" + tempField + "(){");
bw.newLine();
bw.write("\t\treturn this." + _tempField + ";");
bw.newLine();
bw.write("\t}");
bw.newLine();
}
bw.newLine();
bw.write("}");
bw.newLine();
bw.flush();
bw.close();
}
}
最終的效果
后臺(tái)的增刪改查功能都可以生成!希望對(duì)大家有幫助!