package com.util;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Date;
import java.util.Scanner;
/**
*
* @author Gaojie
* @date 2018/10/2 11:37
* 通过数据库表自动生成JavaBean Dao.
* 暂无发现BUG 已调试修改 代码健全;
* 弃用功能:百度翻译
*/
public class Automatically {
/**
* 指定实体生成所在包的路径
*/
private static String packageOutPath = "E:\\IDEA工程\\17_JSP\\1012_Test\\src\\main\\java";
/**
* 作者名字
*/
private static String authorName = "GaoJie";
/**
* 表名 多表用-隔开
*/
private static String tablename = "user";
private static String daoName;
private static String daoImplName;
private static String serviceName;
private static String serviceImplName;
private static String servletName;
/**
* 列名数组
*/
private static String[] colnames;
/**
* 列名类型数组
*/
private static String[] colTypes;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 分割表名数组
String[] split = tablename.split("-");
// 遍历 多表
for (int i = 0; i < split.length; i++) {
tablename = split[i];
daoName = initcap(tablename) + "Dao";
daoImplName = initcap(tablename) + "DaoImpl";
serviceName = initcap(tablename) + "Service";
serviceImplName = initcap(tablename) + "ServiceImpl";
servletName = initcap(tablename) + "Servlet";
//生成JavaBean
generateJavaBean();
//生成Dao 接口
generateDao();
//生成Dao 实现
generateDaoImpl();
//生成service
generateService();
//生成serviceImpl
generateServiceImpl();
//生成servlet
generateServlet();
}
}
/**
* 功能:生成JavaBean
*/
private static void generateJavaBean() {
//创建连接
Connection con = null;
PreparedStatement ps = null;
//查要生成JavaBean的表
//SQL语句
String sql = "select * from " + tablename;
try {
//获取连接
con = Dbmanger.getConn();
ps = con.prepareStatement(sql);
ResultSetMetaData rsmd = ps.getMetaData();
//返回列数
int size = rsmd.getColumnCount();
colnames = new String[size];
colTypes = new String[size];
//得到列名和列类型
for (int i = 0; i < size; i++) {
//列名
colnames[i] = rsmd.getColumnName(i + 1);
//列数据库类型名
colTypes[i] = rsmd.getColumnTypeName(i + 1);
}
//得到JavaBean代码
String content = parse(colnames, colTypes);
File directory = new File(packageOutPath + "\\com\\bean");
//创建目录
directory.mkdirs();
String outputPath = packageOutPath + "\\com\\bean\\" + initcap(tablename) + ".java";
PrintWriter pw = new PrintWriter(new FileWriter(outputPath));
pw.println(content);
pw.flush();
pw.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:生成JavaBean代码
*
* @param colnames
* @param colTypes
* @return
*/
private static String parse(String[] colnames, String[] colTypes) throws Exception {
StringBuffer sb = new StringBuffer();
sb.append("package " + "com.bean" + ";\r\n");
sb.append("\r\n");
for (String colType : colTypes) {
if ("Date".equals(sqlType2JavaType(colType))) {
sb.append("import java.sql.Date;\r\n\r\n");
}
}
sb.append("import java.io.Serializable;\r\n\r\n");
//注释部分
sb.append("\r\n/**\r\n");
sb.append(" * Created by @author " + authorName + "\r\n");
sb.append(" *\r\n");
sb.append(" * @date " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("\r\n\r\npublic class " + initcap(tablename) + " implements Serializable {\r\n");
//属性
processAllAttrs(sb);
//get set方法
processAllMethod(sb);
sb.append("}\r\n");
return sb.toString();
}
/**
* 功能:生成属性
*
* @param sb
*/
private static void processAllAttrs(StringBuffer sb) {
for (int i = 0; i < colnames.length; i++) {
try {
//加上翻译
//String translateResult = getTranslateResult(colnames[i]);
sb.append("\tprivate " + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ";" + "\r\n");
} catch (Exception e) {
e.printStackTrace();
}
}
sb.append("\r\n");
}
/**
* 功能:生成set get方法
*
* @param sb
*/
private static void processAllMethod(StringBuffer sb) {
//无参 有参
sb.append("\tpublic " + initcap(tablename) + "(){\r\n");
sb.append("\t}\r\n\r\n");
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
sb2.append(sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ",");
}
String s = sb2.toString();
s = s.substring(0, s.length() - 1);
sb.append("\tpublic " + initcap(tablename) + "(" + s + "){\r\n");
StringBuffer sb3 = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
sb3.append("\t\tthis." + colnames[i] + " = " + colnames[i] + ";\r\n");
}
String s2 = sb3.toString();
sb.append(s2);
sb.append("\t}\r\n");
//toString
sb.append("\t@Override\r\n");
sb.append("\tpublic " + "String toString(){\r\n\t\treturn ");
StringBuffer sb4 = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
sb4.append("\"," + colnames[i] + "=\" + " + colnames[i] + " + \r\n\t\t");
}
String s3 = sb4.toString();
s3 = s3.substring(0, 1) + s3.substring(2, s3.length() - 7) + ";";
sb.append(s3);
sb.append("\r\n\t}\r\n");
//set get
for (int i = 0; i < colnames.length; i++) {
sb.append("\tpublic void set" + initcap(colnames[i]) + "(" + sqlType2JavaType(colTypes[i]) + " " +
colnames[i] + "){\r\n");
sb.append("\t\tthis." + colnames[i] + "=" + colnames[i] + ";\r\n");
sb.append("\t}\r\n\r\n");
sb.append("\tpublic " + sqlType2JavaType(colTypes[i]) + " get" + initcap(colnames[i]) + "(){\r\n");
sb.append("\t\treturn " + colnames[i] + ";\r\n");
sb.append("\t}\r\n\r\n");
}
}
/**
* Dao
* 功能:生成Dao接口 创建文件
*/
public static void generateDao() {
File directory = new File(packageOutPath + "\\com\\dao");
//创建目录
directory.mkdirs();
try {
//代码
String content = parseDao();
String outputPath = packageOutPath + "\\com\\dao\\" + daoName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:生成Dao接口主体代码
*
* @param
* @return
* @throws Exception
*/
private static String parseDao() {
StringBuffer sb = new StringBuffer();
sb.append("package com.dao;\r\n");
sb.append("\r\n");
sb.append("import com.bean." + initcap(tablename) + ";");
sb.append("\r\n");
sb.append("import java.util.List;");
sb.append("\r\n");
//注释部分
sb.append("\r\n/**\r\n");
sb.append(" * Created by @author " + authorName + "\r\n");
sb.append(" *\r\n");
sb.append(" * @date " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("\r\n\r\npublic interface " + daoName + "{\r\n");
//生成Dao所有方法
processDaoAllMethod(sb);
sb.append("}\r\n");
return sb.toString();
}
/**
* 功能:生成Dao接口的方法
*
* @param sb
*/
private static void processDaoAllMethod(StringBuffer sb) {
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllById"};
for (int i = 0; i < str2.length; i++) {
sb.append("\r\n");
if ("selectAll".equals(str2[i])) {
sb.append("\tList " + str2[i] + "();");
} else if ("selectAllById".equals(str2[i])) {
sb.append("\tList " + str2[i] + "(" + initcap(tablename) + " " + tablename + ");");
} else {
sb.append("\tvoid " + str2[i] + "(" + initcap(tablename) + " " + tablename + ");");
}
sb.append("\t\r\n");
}
}
/**
* 功能:生成DaoService接口实现
*/
public static void generateDaoImpl() {
File directory = new File(packageOutPath + "\\com\\dao\\impl");
//创建目录
directory.mkdirs();
try {
//代码
String content = parseDaoImpl(directory);
String outputPath = packageOutPath + "\\com\\dao\\impl\\" + daoImplName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:生成daoimpl主体代码
*
* @param directory
* @return
*/
private static String parseDaoImpl(File directory) {
StringBuffer sb = new StringBuffer();
sb.append("package com.dao.impl;\r\n");
sb.append("\r\n");
sb.append("import java.util.List;");
sb.append("\r\n");
sb.append("import java.util.ArrayList;");
sb.append("\r\n");
sb.append("import com.util.Dbmanger;");
sb.append("\r\n");
sb.append("import java.sql.*;");
sb.append("\r\n");
sb.append("import com.dao." + daoName + ";");
sb.append("\r\n");
sb.append("import com.bean." + initcap(tablename) + ";");
sb.append("\r\n");
sb.append("\r\n");
//注释部分
sb.append("\r\n/**\r\n");
sb.append(" * Created by @author " + authorName + "\r\n");
sb.append(" *\r\n");
sb.append(" * @date " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("\r\n\r\npublic class " + daoName + "Impl" + " implements " + daoName + "{\r\n");
//生成Dao所有方法
processDaoImplAllMethod(sb);
sb.append("}\r\n");
return sb.toString();
}
/**
* 功能:生成Dao实现类方法
*
* @param sb
* @param
*/
private static void processDaoImplAllMethod(StringBuffer sb) {
String[] str = {"增加", "删除", "修改", "查询", "根据id进行查询"};
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllById"};
for (int i = 0; i < str.length; i++) {
sb.append("\r\n\t");
sb.append("// " + str[i]);
sb.append("\r\n");
if ("增加".equals(str[i])) {
sb.append("\t@Override\r\n");
sb.append("\tpublic void " + str2[i] + "(" + initcap(tablename) + " " + tablename + ") {\r\n");
daoImplInsert(sb);
sb.append("\t}\r\n");
} else if ("删除".equals(str[i])) {
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic void " + str2[i] + "(" + initcap(tablename) + " " + tablename + ") {\r\n");
daoImplDelete(sb);
sb.append("\t}\r\n");
} else if ("修改".equals(str[i])) {
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic void " + str2[i] + "(" + initcap(tablename) + " " + tablename + ") {\r\n");
daoImplUpdate(sb);
sb.append("\t}\r\n");
} else if ("查询".equals(str[i])) {
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "() {\r\n");
daoImplSelectAll(sb);
sb.append("\t}\r\n");
} else if ("根据id进行查询".equals(str[i])) {
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "(" + initcap(tablename) + " " + tablename + ") {\r\n");
daoImplSelectAllById(sb);
sb.append("\t}\r\n");
}
sb.append("\t\r\n");
}
}
/**
* 增加
*
* @param sb
*/
private static void daoImplInsert(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = Dbmanger.getConn();\r\n");
sb.append("\t\tString sql = \"INSERT INTO " + tablename + " (");
StringBuffer temporary = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
temporary.append(colnames[i] + ",");
}
sb.append(temporary.substring(0, temporary.length() - 1));
sb.append(")VALUES (");
StringBuffer temporary2 = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
temporary2.append("?,");
}
sb.append(temporary2.substring(0, temporary2.length() - 1) + ")\";");
sb.append("\r\n\t\t");
sb.append("PreparedStatement ps = null;");
sb.append("\r\n\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t");
sb.append("ps = con.prepareStatement(sql);");
for (int i = 0; i < colnames.length; i++) {
sb.append("\r\n\t\t\t");
sb.append("ps.set" + initcap(sqlType2JavaType(colTypes[i])) + "(" + (i + 1) + ", " + tablename + ".get" + initcap(colnames[i]) + "());");
}
sb.append("\r\n\t\t\t");
sb.append("ps.executeUpdate();");
sb.append("\r\n\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t");
sb.append("} finally {");
sb.append("\r\n\t\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t\t");
sb.append("ps.close();");
sb.append("\r\n\t\t\t\t");
sb.append("con.close();");
sb.append("\r\n\t\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t\t");
sb.append("}\r\n\t\t}\r\n");
}
/**
* 删除
*
* @param sb
*/
private static void daoImplDelete(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = Dbmanger.getConn();\r\n");
sb.append("\t\tString sql = \"DELETE FROM " + tablename + " WHERE " + colnames[0] + " = ?\";");
sb.append("\r\n\t\t");
sb.append("PreparedStatement ps = null;");
sb.append("\r\n\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t");
sb.append("ps = con.prepareStatement(sql);");
sb.append("\r\n\t\t\t");
sb.append("ps.set" + initcap(sqlType2JavaType(colTypes[0])) + "(" + (0 + 1) + ", " + tablename + ".get" + initcap(colnames[0]) + "());");
sb.append("\r\n\t\t\t");
sb.append("ps.executeUpdate();");
sb.append("\r\n\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t");
sb.append("} finally {");
sb.append("\r\n\t\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t\t");
sb.append("ps.close();");
sb.append("\r\n\t\t\t\t");
sb.append("con.close();");
sb.append("\r\n\t\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t\t");
sb.append("}\r\n\t\t}\r\n");
}
/**
* 修改
*
* @param sb
*/
private static void daoImplUpdate(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = Dbmanger.getConn();\r\n");
sb.append("\t\tString sql = \"UPDATE " + tablename + " SET ");
StringBuffer temporary = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
temporary.append(colnames[i] + " = ?,");
}
sb.append(temporary.substring(0, temporary.length() - 1) + " WHERE " + colnames[0] + " = ?\";");
sb.append("\r\n\t\t");
sb.append("PreparedStatement ps = null;");
sb.append("\r\n\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t");
sb.append("ps = con.prepareStatement(sql);");
for (int i = 0; i < colnames.length; i++) {
sb.append("\r\n\t\t\t");
sb.append("ps.set" + initcap(sqlType2JavaType(colTypes[i])) + "(" + (i + 1) + ", " + tablename + ".get" + initcap(colnames[i]) + "());");
}
sb.append("\r\n\t\t\t");
sb.append("ps.set" + initcap(sqlType2JavaType(colTypes[0])) + "(" + (colnames.length + 1) + ", " + tablename + ".get" + initcap(colnames[0]) + "());");
sb.append("\r\n\t\t\t");
sb.append("ps.executeUpdate();");
sb.append("\r\n\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t");
sb.append("} finally {");
sb.append("\r\n\t\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t\t");
sb.append("ps.close();");
sb.append("\r\n\t\t\t\t");
sb.append("con.close();");
sb.append("\r\n\t\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t\t");
sb.append("}\r\n\t\t}\r\n");
}
/**
* 查询所有
*
* @param sb
*/
private static void daoImplSelectAll(StringBuffer sb) {
sb.append("\t\tList<" + initcap(tablename) + "> list = new ArrayList<" + initcap(tablename) + ">();\r\n");
//获取连接
sb.append("\t\tConnection con = Dbmanger.getConn();\r\n");
sb.append("\t\tString sql = \"SELECT ");
StringBuffer temporary = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
temporary.append(colnames[i] + ",");
}
sb.append(temporary.substring(0, temporary.length() - 1));
sb.append(" FROM " + tablename + "\";");
StringBuffer temporary2 = new StringBuffer();
sb.append("\r\n\t\t");
sb.append("PreparedStatement ps = null;");
sb.append("\r\n\t\t");
sb.append("ResultSet rs = null;");
sb.append("\r\n\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t");
sb.append("ps = con.prepareStatement(sql);");
sb.append("\r\n\t\t\t");
sb.append("rs = ps.executeQuery();");
sb.append("\r\n\t\t\t");
sb.append("while (rs.next()) {");
sb.append("\r\n\t\t\t\t");
sb.append(initcap(tablename) + " " + tablename + " = new " + initcap(tablename) + "();");
for (int i = 0; i < colnames.length; i++) {
sb.append("\r\n\t\t\t\t");
sb.append(tablename + ".set" + initcap(colnames[i]) + "(rs.get" + initcap(sqlType2JavaType(colTypes[i])) + "(\"" + colnames[i] + "\"));");
}
sb.append("\r\n\t\t\t\t");
sb.append("list.add(" + tablename + ");");
sb.append("\r\n\t\t\t");
sb.append("}");
sb.append("\r\n\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t");
sb.append("} finally {");
sb.append("\r\n\t\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t\t");
sb.append("rs.close();");
sb.append("\r\n\t\t\t\t");
sb.append("ps.close();");
sb.append("\r\n\t\t\t\t");
sb.append("con.close();");
sb.append("\r\n\t\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t\t");
sb.append("}");
sb.append("\r\n\t\t");
sb.append("}");
sb.append("\r\n\t\t");
sb.append("return list;\r\n");
}
/**
* 根据id查询
*
* @param sb
*/
private static void daoImplSelectAllById(StringBuffer sb) {
sb.append("\t\tList<" + initcap(tablename) + "> list = new ArrayList<" + initcap(tablename) + ">();\r\n");
//获取连接
sb.append("\t\tConnection con = Dbmanger.getConn();\r\n");
sb.append("\t\tString sql = \"SELECT ");
StringBuffer temporary = new StringBuffer();
for (int i = 0; i < colnames.length; i++) {
temporary.append(colnames[i] + ",");
}
sb.append(temporary.substring(0, temporary.length() - 1));
sb.append(" FROM " + tablename + " WHERE " + colnames[0] + " = ?\";");
StringBuffer temporary2 = new StringBuffer();
sb.append("\r\n\t\t");
sb.append("PreparedStatement ps = null;");
sb.append("\r\n\t\t");
sb.append("ResultSet rs = null;");
sb.append("\r\n\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t");
sb.append("ps = con.prepareStatement(sql);");
sb.append("\r\n\t\t\t");
sb.append("ps.set" + initcap(sqlType2JavaType(colTypes[0])) + "(" + (0 + 1) + ", " + tablename + ".get" + initcap(colnames[0]) + "());");
sb.append("\r\n\t\t\t");
sb.append("rs = ps.executeQuery();");
sb.append("\r\n\t\t\t");
sb.append("while (rs.next()) {");
sb.append("\r\n\t\t\t\t");
sb.append(initcap(tablename) + " " + tablename + "2= new " + initcap(tablename) + "();");
for (int i = 0; i < colnames.length; i++) {
sb.append("\r\n\t\t\t\t");
sb.append(tablename + "2.set" + initcap(colnames[i]) + "(rs.get" + initcap(sqlType2JavaType(colTypes[i])) + "(\"" + colnames[i] + "\"));");
}
sb.append("\r\n\t\t\t\t");
sb.append("list.add(" + tablename + "2);");
sb.append("\r\n\t\t\t");
sb.append("}");
sb.append("\r\n\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t");
sb.append("} finally {");
sb.append("\r\n\t\t\t");
sb.append("try {");
sb.append("\r\n\t\t\t\t");
sb.append("rs.close();");
sb.append("\r\n\t\t\t\t");
sb.append("ps.close();");
sb.append("\r\n\t\t\t\t");
sb.append("con.close();");
sb.append("\r\n\t\t\t");
sb.append("} catch (SQLException e) {");
sb.append("\r\n\t\t\t\t");
sb.append("e.printStackTrace();");
sb.append("\r\n\t\t\t");
sb.append("}");
sb.append("\r\n\t\t");
sb.append("}");
sb.append("\r\n\t\t");
sb.append("return list;\r\n");
}
/**
* 功能:生成Service 和 ServiceImpl
*/
private static void generateService() {
File directory = new File(packageOutPath + "\\com\\service");
directory.mkdirs();//创建目录
try {
String outputPath = packageOutPath + "\\com\\service\\" + serviceName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
//代码
//String content = parseDao();
StringBuffer sb = new StringBuffer();
sb.append("package com.service;\r\n");
sb.append("\r\n");
sb.append("import com.bean." + initcap(tablename) + ";");
sb.append("\r\n");
sb.append("import java.util.List;");
sb.append("\r\n");
//注释部分
sb.append("\r\n/**\r\n");
sb.append(" * Created by @author " + authorName + "\r\n");
sb.append(" *\r\n");
sb.append(" * @date " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("\r\n\r\npublic interface " + serviceName + "{\r\n");
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllById"};
for (int i = 0; i < str2.length; i++) {
sb.append("\r\n");
if ("selectAll".equals(str2[i])) {
sb.append("\tList " + str2[i] + "();");
} else if ("selectAllById".equals(str2[i])) {
sb.append("\tList " + str2[i] + "(" + initcap(tablename) + " " + tablename + ");");
} else {
sb.append("\tvoid " + str2[i] + "(" + initcap(tablename) + " " + tablename + ");");
}
sb.append("\t\r\n");
}
sb.append("}\r\n");
//************************************************************************
pw.println(sb.toString());
pw.flush();
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:生成ServiceImpl
*/
private static void generateServiceImpl() {
File directory = new File(packageOutPath + "\\com\\service\\impl");
directory.mkdirs();//创建目录
try {
String outputPath = packageOutPath + "\\com\\service\\impl\\" + serviceImplName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
//代码****************************************
StringBuffer sb = new StringBuffer();
sb.append("package com.service.impl;\r\n");
sb.append("\r\n");
sb.append("import java.util.List;");
sb.append("\r\n");
sb.append("import com.dao." + daoName + ";");
sb.append("\r\n");
sb.append("import com.dao.impl." + daoImplName + ";");
sb.append("\r\n");
sb.append("import com.service." + serviceName + ";");
sb.append("\r\n");
sb.append("import com.bean." + initcap(tablename) + ";");
sb.append("\r\n");
sb.append("\r\n");
//注释部分
sb.append("\r\n/**\r\n");
sb.append(" * Created by @author " + authorName + "\r\n");
sb.append(" *\r\n");
sb.append(" * @date " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("\r\n\r\npublic class " + serviceImplName + " implements " + serviceName + "{\r\n");
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllById"};
for (int i = 0; i < str2.length; i++) {
sb.append("\r\n");
sb.append("\r\n\t@Override\r\n");
if ("selectAllById".equals(str2[i])) {
sb.append("\tpublic List " + str2[i] + "(" + initcap(tablename) + " " + tablename + ") {\r\n");
sb.append("\t\t" + daoName + " " + tablename + "DaoImpl = new " + daoImplName + "();\r\n");
sb.append("\t\tList<" + initcap(tablename) + "> list = " + tablename + "DaoImpl." + str2[i] + "(" + tablename + ");\r\n");
sb.append("\t\treturn list;\r\n");
sb.append("\t}\r\n");
} else if ("selectAll".equals(str2[i])) {
sb.append("\tpublic List " + str2[i] + "() {\r\n");
sb.append("\t\t" + daoName + " " + tablename + "DaoImpl = new " + daoImplName + "();\r\n");
sb.append("\t\tList<" + initcap(tablename) + "> list = " + tablename + "DaoImpl." + str2[i] + "();\r\n");
sb.append("\t\treturn list;\r\n");
sb.append("\t}\r\n");
} else {
sb.append("\tpublic void " + str2[i] + "(" + initcap(tablename) + " " + tablename + ") {\r\n");
sb.append("\t\t" + daoName + " " + tablename + "DaoImpl = new " + daoImplName + "();\r\n");
sb.append("\t\t" + tablename + "DaoImpl." + str2[i] + "(" + tablename + ");\r\n");
sb.append("\t}\r\n");
}
sb.append("\t\r\n");
}
sb.append("}\r\n");
//***********************************************************************************
pw.println(sb.toString());
pw.flush();
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能生成Servlet
*/
private static void generateServlet() {
File directory = new File(packageOutPath + "\\com\\servlet");
directory.mkdirs();//创建目录
try {
//String content = parseDao();
String outputPath = packageOutPath + "\\com\\servlet\\" + servletName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
//代码****************************************
StringBuffer sb = new StringBuffer();
sb.append("package com.servlet;\r\n");
sb.append("\r\n");
sb.append("import javax.servlet.ServletException;");
sb.append("\r\n");
sb.append("import javax.servlet.annotation.WebServlet;");
sb.append("\r\n");
sb.append("import javax.servlet.http.HttpServlet;");
sb.append("\r\n");
sb.append("import javax.servlet.http.HttpServletRequest;");
sb.append("\r\n");
sb.append("import javax.servlet.http.HttpServletResponse;");
sb.append("\r\n");
sb.append("import java.io.IOException;");
sb.append("\r\n");
sb.append("import java.io.PrintWriter;");
sb.append("\r\n");
sb.append("\r\n");
//注释部分
sb.append("\r\n/**\r\n");
sb.append(" * Created by @author " + authorName + "\r\n");
sb.append(" *\r\n");
sb.append(" * @date " + new Date() + "\r\n");
sb.append(" */ \r\n");
sb.append("@WebServlet(name = \"" + servletName + "\", urlPatterns = \"/" + servletName + "\")\r\n");
//实体部分
sb.append("public class " + servletName + " extends HttpServlet {\r\n");
sb.append("\t@Override\r\n");
sb.append("\tprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n");
sb.append("\t\t//请求参数编码规则\r\n");
sb.append("\t\trequest.setCharacterEncoding(\"utf-8\");\r\n");
sb.append("\t\t//获取数据\r\n");
sb.append("\t\tString username = request.getParameter(\"username\");\r\n");
sb.append("\t\t//设置回传的参数编码规则\r\n");
sb.append("\t\tresponse.setContentType(\"text/html;charset=utf-8\");\r\n");
sb.append("\t\t//字符类型标准打印输出流,继承Write\r\n");
sb.append("\t\tPrintWriter out = response.getWriter();\r\n");
sb.append("\t\t//判断\r\n\r\n");
sb.append("\t}\r\n\r\n");
sb.append("\t@Override\r\n");
sb.append("\tprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n");
sb.append("\t\t//获取数据\r\n");
sb.append("\t\tString username = request.getParameter(\"username\");\r\n");
sb.append("\t\t//请求参数编码规则\r\n");
sb.append("\t\tusername = new String(username.getBytes(\"ISO-8859-1\"), \"UTF-8\");\r\n");
sb.append("\t\t//设置回传的参数编码规则\r\n");
sb.append("\t\tresponse.setContentType(\"text/html;charset=utf-8\");\r\n");
sb.append("\t\t//字符类型标准打印输出流,继承Write\r\n");
sb.append("\t\tPrintWriter out = response.getWriter();\r\n");
sb.append("\t\t//判断\r\n\r\n");
sb.append("\t}\r\n");
sb.append("}\r\n");
//***********************************************************************************
pw.println(sb.toString());
pw.flush();
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/*************************************
* 功能:将输入字符串的首字母改成大写
*
* @param str
* @return
*/
private static String initcap(String str) {
char[] ch = str.toCharArray();
char a = 'a';
char z = 'z';
if (ch[0] >= a && ch[0] <= z) {
ch[0] = (char) (ch[0] - 32);
}
return new String(ch);
}
/**
* 功能:获得列的数据类型
*
* @param sqlType
* @return
*/
private static String sqlType2JavaType(String sqlType) {
if (sqlType.equalsIgnoreCase("bit")) {
return "boolean";
} else if (sqlType.equalsIgnoreCase("tinyint")) {
return "byte";
} else if (sqlType.equalsIgnoreCase("smallint")) {
return "short";
} else if (sqlType.equalsIgnoreCase("int")) {
return "int";
} else if (sqlType.equalsIgnoreCase("bigint")) {
return "long";
} else if (sqlType.equalsIgnoreCase("float")) {
return "float";
} else if (sqlType.equalsIgnoreCase("decimal") || sqlType.equalsIgnoreCase("double") || sqlType.equalsIgnoreCase("numeric")
|| sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")
|| sqlType.equalsIgnoreCase("smallmoney")) {
return "double";
} else if (sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")
|| sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")
|| sqlType.equalsIgnoreCase("text")) {
return "String";
} else if (sqlType.equalsIgnoreCase("datetime") || sqlType.equalsIgnoreCase("date")) {
return "Date";
} else if (sqlType.equalsIgnoreCase("image")) {
return "Blod";
} else if (sqlType.equalsIgnoreCase("Timestamp")) {
return "Timestamp";
}
return null;
}
// /**
// * 功能:翻译字符串
// *
// * @param urlString
// * @return
// * @throws Exception
// */
// private static String getTranslateResult(String urlString) throws Exception {
// final String PreUrl = "http://www.baidu.com/s?wd="; //百度搜索URL
// final String TransResultStartFlag = ""; //翻译开始标签
// final String TransResultEndFlag = ""; //翻译结束标签
// URL url = new URL(PreUrl + urlString); //生成完整的URL
// // 打开URL
// HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
// // 得到输入流,即获得了网页的内容
// BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
// String preLine = "";
// String line;
// int flag = 1;
// // 读取输入流的数据,并显示
// String content = ""; //翻译结果
// while ((line = reader.readLine()) != null) { //获取翻译结果的算法
// if (preLine.indexOf(TransResultStartFlag) != -1 && line.indexOf(TransResultEndFlag) == -1) {
// content += line.replaceAll(" | ", ""); //去电源代码上面的半角以及全角字符
// break;
// }
// if (line.indexOf(TransResultEndFlag) != -1) {
// flag = 1;
// }
// if (flag == 1) {
// preLine = line;
// }
// }
// return content;//返回翻译结果
// }
}