JSP自动生成 bean dao service servlet

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;//返回翻译结果
//    }
}

 

你可能感兴趣的:(计算机)