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;
/**
* @author Gaojie
* @date 2018/10/2 11:37
* 通过数据库表自动生成JavaBean Dao.
* 值得注意的是该项目是建立在com包下
* 暂无发现BUG 已调试修改 代码健全;
* 弃用功能:百度翻译
*/
public class Automatically {
/**
* 指定实体生成所在包的路径 需要修改
*/
private static String packageOutPath = "E:\\IDEA工程\\JSP\\1107_Test\\src\\main\\java";
/**
* 作者名字 需要修改
*/
private static String authorName = "GaoJie";
/**
* 获取conn连接 下面两个都得改
*/
private static Connection con = DbManGer.getConn();
/**
* 注意我后面还有个 ;号
*/
private static String getConn = "DbManGer.getConn();";
/**
* 表名 多表用-隔开
*/
private static String tableName = "carinf";
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;
private static PreparedStatement ps = null;
public static void main(String[] args) {
// 分割表名数组
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() {
//查要生成JavaBean的表
//SQL语句
String sql = "select * from " + tableName;
try {
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 + "\\" + tableName + "\\com\\bean");
//创建目录
directory.mkdirs();
String outputPath = packageOutPath + "\\" + tableName + "\\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 " + tableName + ".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 + "\\" + tableName + "\\com\\dao");
//创建目录
directory.mkdirs();
try {
//代码
String content = parseDao();
String outputPath = packageOutPath + "\\" + tableName + "\\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 " + tableName + ".com.dao;\r\n");
sb.append("\r\n");
sb.append("import " + tableName + ".com.bean." + initcap(tableName) + ";");
sb.append("\r\n");
sb.append("import com.util.Page;");
sb.append("\r\n");
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[] str1 = {"增加", "删除", "修改", "查询所有", "根据列查询", "根据列查询范围", "分页查询", "查询数据总数"};
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllByColumn", "selectAllByColumnScope", "findByPage", "findByPageCount"};
for (int i = 0; i < str2.length; i++) {
sb.append("\r\n");
if ("selectAll".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "();");
} else if ("selectAllByColumn".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param string 列名\r\n" +
"\t * @param value 列值\r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "(String string, String value);");
} else if ("selectAllByColumnScope".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param string 列名\r\n" +
"\t * @param min 小值\r\n" +
"\t * @param max 大值\r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "(String string, String min, String max);");
} else if ("findByPage".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param page 对象\r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "(Page page);");
} else if ("findByPageCount".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @return Integer or null\r\n" +
"\t */\r\n");
sb.append("\tInteger " + str2[i] + "();");
} else {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param " + tableName + " 对象\r\n" +
"\t * @return Integer or null\r\n" +
"\t */\r\n");
sb.append("\tInteger " + str2[i] + "(" + initcap(tableName) + " " + tableName + ");");
}
sb.append("\t\r\n");
}
}
/**
* 功能:生成DaoService接口实现
*/
public static void generateDaoImpl() {
File directory = new File(packageOutPath + "\\" + tableName + "\\com\\dao\\impl");
//创建目录
directory.mkdirs();
try {
//代码
String content = parseDaoImpl(directory);
String outputPath = packageOutPath + "\\" + tableName + "\\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 " + tableName + ".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 java.sql.*;");
sb.append("\r\n");
sb.append("\r\n");
sb.append("import " + tableName + ".com.bean." + initcap(tableName) + ";");
sb.append("\r\n");
sb.append("import " + tableName + ".com.dao." + daoName + ";");
sb.append("\r\n");
sb.append("import com.util.DbManGer;");
sb.append("\r\n");
sb.append("import com.util.Page;");
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[] str1 = {"增加", "删除", "修改", "查询所有", "根据列查询", "根据列查询范围", "分页查询", "查询数据总数"};
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllByColumn", "selectAllByColumnScope", "findByPage", "findByPageCount"};
for (int i = 0; i < str1.length; i++) {
sb.append("\r\n");
if ("增加".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param " + tableName + " 对象\r\n" +
"\t * @return Integer or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic Integer " + str2[i] + "(" + initcap(tableName) + " " + tableName + ") {\r\n");
daoImplInsert(sb);
sb.append("\t}\r\n");
} else if ("删除".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param " + tableName + " 对象\r\n" +
"\t * @return Integer or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic Integer " + str2[i] + "(" + initcap(tableName) + " " + tableName + ") {\r\n");
daoImplDelete(sb);
sb.append("\t}\r\n");
} else if ("修改".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param " + tableName + " 对象\r\n" +
"\t * @return Integer or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic Integer " + str2[i] + "(" + initcap(tableName) + " " + tableName + ") {\r\n");
daoImplUpdate(sb);
sb.append("\t}\r\n");
} else if ("查询所有".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @return List or null\r\n" +
"\t */");
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 ("根据列查询".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * 根据列查询\r\n" +
"\t *\r\n" +
"\t * @param string 列名\r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\r\n\t@Override\r\r\n");
sb.append("\tpublic List " + str2[i] + "(String string,String value) {\r\n");
daoImplSelectAllByColumn(sb);
sb.append("\t}\r\n");
} else if ("根据列查询范围".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * 根据列查询范围\r\n" +
"\t *\r\n" +
"\t * @param string 列名\r\n" +
"\t * @param min\t小值\r\n" +
"\t * @param max\t大值\r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "(String string, String min, String max) {\r\n");
daoImplSelectAllByColumnScope(sb);
sb.append("\t}\r\n");
} else if ("分页查询".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param page 对象\r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "(Page page) {\r\n");
daoImplfindByPage(sb);
sb.append("\t}\r\n");
} else if ("查询数据总数".equals(str1[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @return Integer or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic Integer " + str2[i] + "() {\r\n");
daoImplfindByPageCount(sb);
sb.append("\t}\r\n");
}
sb.append("\t\r\n");
}
}
/**
* 分页总条数
*
* @param sb
*/
private static void daoImplfindByPageCount(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = " + getConn + "\r\n");
sb.append("\t\tString sql = \"SELECT CAST( COUNT(*) AS CHAR ) AS COUNT");
sb.append(" FROM " + tableName + " \";");
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("return Integer.parseInt(rs.getString(\"COUNT\"));");
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 null;\r\n");
}
/**
* 分页查询
*
* @param sb
*/
private static void daoImplfindByPage(StringBuffer sb) {
sb.append("\t\tList<" + initcap(tableName) + "> list = new ArrayList<>();\r\n");
//获取连接
sb.append("\t\tConnection con = " + 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 + " limit ?,? \";");
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.setInt(1, ((page.getCurrentPage() - 1) * page.getPageSize()));");
sb.append("\r\n\t\t\t");
sb.append("ps.setInt(2, page.getPageSize());");
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");
}
/**
* 增加
*
* @param sb
*/
private static void daoImplInsert(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = " + 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("return 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\t\treturn null;\r\n");
}
/**
* 删除
*
* @param sb
*/
private static void daoImplDelete(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = " + 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("return 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\t\treturn null;\r\n");
}
/**
* 修改
*
* @param sb
*/
private static void daoImplUpdate(StringBuffer sb) {
//获取连接
sb.append("\t\tConnection con = " + 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("return 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\t\treturn null;\r\n");
}
/**
* 查询所有
*
* @param sb
*/
private static void daoImplSelectAll(StringBuffer sb) {
sb.append("\t\tList<" + initcap(tableName) + "> list = new ArrayList<>();\r\n");
//获取连接
sb.append("\t\tConnection con = " + 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 + "\";");
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");
}
/**
* 根据列查询
*
* @param sb
*/
private static void daoImplSelectAllByColumn(StringBuffer sb) {
sb.append("\t\tList<" + initcap(tableName) + "> list = new ArrayList<>();\r\n");
//获取连接
sb.append("\t\tConnection con = " + 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 \"+string+\" = ? \";");
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.setString(1,value);");
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");
}
/**
* 根据列查询范围
*
* @param sb
*/
private static void daoImplSelectAllByColumnScope(StringBuffer sb) {
sb.append("\t\tList<" + initcap(tableName) + "> list = new ArrayList<>();\r\n");
//获取连接
sb.append("\t\tConnection con = " + getConn + "\r\n");
sb.append("\t\tString sql;\r\n");
sb.append("\t\tif (min == null && min == \"\") {\r\n" +
"\t\t\tmin = \"0\";\r\n" +
"\t\t}\r\n");
sb.append("\t\tif (max != null && max != \"\") {\r\n");
sb.append("\t\t\tsql = \"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 \" + string + \" BETWEEN \" + min + \" AND \" + max + \" \";");
sb.append("\r\n\t\t} else {\r\n");
sb.append("\t\t\tsql = \"SELECT ");
StringBuffer temporary2 = new StringBuffer();
for (int i = 0; i < colNames.length; i++) {
temporary2.append(colNames[i] + ",");
}
sb.append(temporary2.substring(0, temporary2.length() - 1));
sb.append(" FROM " + tableName + " WHERE \" + string + \" >= \" + min + \" \";");
sb.append("\r\n\t\t}");
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");
}
/**
* 功能:生成Service 和 ServiceImpl
*/
private static void generateService() {
File directory = new File(packageOutPath + "\\" + tableName + "\\com\\service");
directory.mkdirs();//创建目录
try {
String outputPath = packageOutPath + "\\" + tableName + "\\com\\service\\" + serviceName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
//代码
//String content = parseDao();
StringBuffer sb = new StringBuffer();
sb.append("package " + tableName + ".com.service;\r\n");
sb.append("\r\n");
sb.append("import " + tableName + ".com.bean." + initcap(tableName) + ";");
sb.append("\r\n");
sb.append("import com.util.Page;");
sb.append("\r\n");
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[] str1 = {"增加", "删除", "修改", "查询所有", "根据列查询", "根据列查询范围", "分页查询"};
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllByColumn", "selectAllByColumnScope", "findByPage"};
for (int i = 0; i < str2.length; i++) {
sb.append("\r\n");
if ("selectAll".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "();");
} else if ("selectAllByColumn".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param string 列名\r\n" +
"\t * @param value 列值\r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "(String string, String value);");
} else if ("selectAllByColumnScope".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param string 列名\r\n" +
"\t * @param min 小值\r\n" +
"\t * @param max 大值\r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "(String string, String min, String max);");
} else if ("findByPage".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param page 对象\r\n" +
"\t * @return List or null\r\n" +
"\t */\r\n");
sb.append("\tList " + str2[i] + "(Page page);");
} else {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param " + tableName + " 对象\r\n" +
"\t * @return Integer or null\r\n" +
"\t */\r\n");
sb.append("\tInteger " + 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 + "\\" + tableName + "\\com\\service\\impl");
directory.mkdirs();//创建目录
try {
String outputPath = packageOutPath + "\\" + tableName + "\\com\\service\\impl\\" + serviceImplName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
//代码****************************************
StringBuffer sb = new StringBuffer();
sb.append("package " + tableName + ".com.service.impl;\r\n");
sb.append("\r\n");
sb.append("import java.util.List;");
sb.append("\r\n");
sb.append("\r\n");
sb.append("import com.util.Page;");
sb.append("\r\n");
sb.append("import " + tableName + ".com.dao." + daoName + ";");
sb.append("\r\n");
sb.append("import " + tableName + ".com.dao.impl." + daoImplName + ";");
sb.append("\r\n");
sb.append("import " + tableName + ".com.service." + serviceName + ";");
sb.append("\r\n");
sb.append("import " + tableName + ".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[] str1 = {"增加", "删除", "修改", "查询所有", "根据列查询", "根据列查询范围", "分页查询"};
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllByColumn", "selectAllByColumnScope", "findByPage"};
sb.append("\tprivate static " + daoName + " " + tableName + "DaoImpl = new " + daoImplName + "();\r\n");
for (int i = 0; i < str2.length; i++) {
sb.append("\r\n");
if ("selectAllByColumn".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * 根据列查询\r\n" +
"\t *\r\n" +
"\t * @param string 列名\r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\r\n\t@Override\r\r\n");
sb.append("\tpublic List " + str2[i] + "(String string,String value) {\r\n\t\t");
sb.append("return " + tableName + "DaoImpl." + str2[i] + "(string, value);");
sb.append(" \r\n\t}\r\n");
} else if ("selectAllByColumnScope".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * 根据列查询范围\r\n" +
"\t *\r\n" +
"\t * @param string 列名\r\n" +
"\t * @param min\t小值\r\n" +
"\t * @param max\t大值\r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "(String string, String min, String max) {\r\n\t\t");
sb.append("return " + tableName + "DaoImpl." + str2[i] + "(string, min, max);");
sb.append(" \r\n\t}\r\n");
} else if ("selectAll".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "() { \r\n\t\t");
sb.append("return " + tableName + "DaoImpl." + str2[i] + "();");
sb.append(" \r\n\t}\r\n");
} else if ("findByPage".equals(str2[i])) {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param page 对象\r\n" +
"\t * @return List or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic List " + str2[i] + "(Page page) {\r\n");
serviceImplFindByPage(sb);
sb.append("\t}\r\n");
} else {
sb.append("\t/**\r\n" +
"\t * " + str1[i] + "\r\n" +
"\t * \r\n" +
"\t * @param " + tableName + " 对象\r\n" +
"\t * @return Integer or null\r\n" +
"\t */");
sb.append("\r\n\t@Override\r\n");
sb.append("\tpublic Integer " + str2[i] + "(" + initcap(tableName) + " " + tableName + ") { \r\n\t\t");
sb.append("return " + tableName + "DaoImpl." + str2[i] + "(" + tableName + ");");
sb.append("\r\n\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();
}
}
private static void serviceImplFindByPage(StringBuffer sb) {
sb.append("\t\t// 查询总数据条数\r\n");
sb.append("\t\tpage.setTotalCount(" + tableName + "DaoImpl.findByPageCount());\r\n");
sb.append("\t\t// 计算总页数\r\n" +
"\t\tint totalPage = 0;\r\n" +
"\t\ttotalPage = page.getTotalCount() % page.getPageSize() == 0 ? page.getTotalCount() / page.getPageSize() : page.getTotalCount() / page.getPageSize() + 1;\r\n" +
"\t\tpage.setTotalPage(totalPage);\r\n" +
"\t\t// begin 与 end\r\n" +
"\t\tint Begin = 0, end = 0;\r\n" +
"\t\tif (page.getTotalPage() <= 10) {\r\n" +
"\t\t\tBegin = 1;\r\n" +
"\t\t\tend = (page.getTotalPage());\r\n" +
"\t\t} else if (page.getCurrentPage() <= 5) {\r\n" +
"\t\t\tBegin = 1;\r\n" +
"\t\t\tend = 10;\r\n" +
"\t\t} else if (page.getCurrentPage() >= page.getTotalPage() - 5) {\r\n" +
"\t\t\tBegin = page.getTotalPage() - 9;\r\n" +
"\t\t\tend = page.getTotalPage();\r\n" +
"\t\t} else {\r\n" +
"\t\t\tBegin = page.getCurrentPage() - 4;\r\n" +
"\t\t\tend = page.getCurrentPage() + 5;\r\n" +
"\t\t}\r\n" +
"\t\tpage.setBegin(Begin);\r\n" +
"\t\tpage.setEnd(end);\r\n");
sb.append("\t\treturn " + tableName + "DaoImpl.findByPage(page);\r\n");
}
/**
* 功能生成Servlet controller
*/
private static void generateServlet() {
File directory = new File(packageOutPath + "\\" + tableName + "\\com\\controller");
directory.mkdirs();//创建目录
try {
//String content = parseDao();
String outputPath = packageOutPath + "\\" + tableName + "\\com\\controller\\" + servletName + ".java";
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
//代码****************************************
StringBuffer sb = new StringBuffer();
sb.append("package " + tableName + ".com.controller;\r\n");
sb.append("\r\n");
sb.append("import " + tableName + ".com.bean." + initcap(tableName) + ";\r\n" +
"import " + tableName + ".com.service." + serviceName + ";\r\n" +
"import " + tableName + ".com.service.impl." + serviceImplName + ";\r\n" +
"import com.util.Page;\r\n" +
"\r\n" +
"import javax.servlet.ServletException;\r\n" +
"import javax.servlet.annotation.WebServlet;\r\n" +
"import javax.servlet.http.HttpServlet;\r\n" +
"import javax.servlet.http.HttpServletRequest;\r\n" +
"import javax.servlet.http.HttpServletResponse;\r\n" +
"import java.io.IOException;\r\n" +
"import java.io.PrintWriter;\r\n" +
"import java.sql.Date;\r\n" +
"import java.util.List;");
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\r\n");
servletEntityPortion(sb);
sb.append("}");
//***********************************************************************************
pw.println(sb.toString());
pw.flush();
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* servlet 实体部分代码
*
* @param sb sb
*/
private static void servletEntityPortion(StringBuffer sb) {
sb.append("\t/**\r\n" +
"\t * " + serviceName + " " + tableName + "ServiceImpl 增删改查 查Name 分页查询\r\n" +
"\t */\r\n" +
"\tprivate static " + serviceName + " " + tableName + "ServiceImpl = new " + serviceImplName + "();\r\n" +
"\r\n" +
"\t@Override\r\n" +
"\tprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {");
sb.append("// 请求对象编码规则\r\n" +
"\t\trequest.setCharacterEncoding(\"utf-8\");\r\n" +
"\t\t// 获取数据\r\n" +
"\t\tString label = request.getParameter(\"label\");\r\n" +
"\t\t// 跳转的页面\r\n" +
"\t\tString goToURL = \"" + tableName + ".jsp\";\r\n" +
"\t\t// 设置回传的对象编码规则\r\n" +
"\t\tresponse.setContentType(\"text/html;charset=utf-8\");\r\n" +
"\t\t// 字符类型标准打印输出流,继承Write\r\n" +
"\t\tPrintWriter pw = response.getWriter();\r\n" +
"\t\t// 获取对象\r\n" +
"\t\t" + initcap(tableName) + " " + tableName + " = gettingData(request);\r\n" +
"\r\n" +
"\t\t// 数据数组\n" +
"\t\tList list = null;\n" +
"\t\t// 分页数据对象\n" +
"\t\tPage page = new Page();\n" +
"\n" +
"\t\t// 查询\n" +
"\t\tif (\"selectAll\".equals(label)) {\n" +
"\t\t\tlist = selectAll();\n" +
"\t\t}\n" +
"\t\t// 根据列名查询\n" +
"\t\telse if (\"selectAllByColumn\".equals(label)) {\n" +
"\t\t\tString columnName = request.getParameter(\"columnName\");\n" +
"\t\t\tString columnValue = request.getParameter(\"columnValue\");\n" +
"\t\t\tlist = selectAllByColumn(columnName, columnValue);\n" +
"\t\t}\n" +
"\t\t// 根据列名查询范围\n" +
"\t\telse if (\"selectAllByColumnScope\".equals(label)) {\n" +
"\t\t\tString columnName = request.getParameter(\"columnName\");\n" +
"\t\t\tString minValue = request.getParameter(\"minValue\");\n" +
"\t\t\tString maxValue = request.getParameter(\"maxValue\");\n" +
"\t\t\tlist = selectAllByColumnScope(columnName, minValue, maxValue);\n" +
"\t\t}\n" +
"\t\t// 分页显示\n" +
"\t\telse if (\"findByPage\".equals(label)) {\n" +
"\t\t\tpage = page(page, request);\n" +
"\t\t\tlist = findByPage(page);\n" +
"\t\t}\n" +
"\t\t// return list or null\n" +
"\t\tif (list != null) {\n" +
"\t\t\trequest.setAttribute(\"page\", page);\n" +
"\t\t\trequest.setAttribute(\"list\", list);\n" +
"\t\t\trequest.getRequestDispatcher(goToURL).forward(request, response);\n" +
"\t\t}\n" +
"\n" +
"\n" +
"\t\t// AJAX 回传的字符串\n" +
"\t\tString pwStr = null;\n" +
"\t\t// 增加\n" +
"\t\tif (\"insert\".equals(label)) {\n" +
"\t\t\tpwStr = insert("+tableName+");\n" +
"\t\t}\n" +
"\t\t// 删除\n" +
"\t\telse if (\"delete\".equals(label)) {\n" +
"\t\t\tpwStr = delete("+tableName+");\n" +
"\t\t}\n" +
"\t\t// 修改\n" +
"\t\telse if (\"update\".equals(label)) {\n" +
"\t\t\tpwStr = update("+tableName+");\n" +
"\t\t}\n" +
"\t\t// return str or null\n" +
"\t\tif (pwStr != null) {\n" +
"\t\t\tpw.write(pwStr);\n" +
"\t\t\tpw.close();\n" +
"\t\t}" +
"\t}\r\n\r\n");
String[] str1 = {"增加", "删除", "修改", "查询所有", "根据列名查询","根据列查询范围", "分页显示"};
String[] str2 = {"insert", "delete", "update", "selectAll", "selectAllByColumn","selectAllByColumnScope", "findByPage"};
for (int i = 0; i < str2.length; i++) {
if ("selectAll".equals(str2[i])) {
sb.append("\t/**\n" +
"\t * 查询所有\n" +
"\t *\n" +
"\t * @return list or null\n" +
"\t */\n" +
"\tprivate List selectAll() {\n" +
"\t\tList list = "+tableName+"ServiceImpl.selectAll();\n" +
"\t\tif (list.size() != 0) {\n" +
"\t\t\treturn list;\n" +
"\t\t} else {\n" +
"\t\t\treturn null;\n" +
"\t\t}\n" +
"\t}\r\n\r\n");
} else if ("selectAllByColumn".equals(str2[i])) {
sb.append("\t/**\n" +
"\t * 根据列名查询\n" +
"\t *\n" +
"\t * @param columnName 列名\n" +
"\t * @param columnValue 列值\n" +
"\t * @return list or null\n" +
"\t */\n" +
"\tprivate List selectAllByColumn(String columnName, String columnValue) {\n" +
"\t\tList list = "+tableName+"ServiceImpl.selectAllByColumn(columnName, columnValue);\n" +
"\t\tif (list.size() != 0) {\n" +
"\t\t\treturn list;\n" +
"\t\t} else {\n" +
"\t\t\treturn null;\n" +
"\t\t}\n" +
"\t}\r\n\r\n");
} else if ("selectAllByColumnScope".equals(str2[i])) {
sb.append("\t/**\n" +
"\t * 根据列查询范围\n" +
"\t *\n" +
"\t * @param columnName 列名\n" +
"\t * @param minValue 小值\n" +
"\t * @param maxValue 大值\n" +
"\t * @return List\n" +
"\t */\n" +
"\tprivate List selectAllByColumnScope(String columnName, String minValue, String maxValue) {\n" +
"\t\tList list = "+tableName+"ServiceImpl.selectAllByColumnScope(columnName, minValue, maxValue);\n" +
"\t\tif (list.size() != 0) {\n" +
"\t\t\treturn list;\n" +
"\t\t} else {\n" +
"\t\t\treturn null;\n" +
"\t\t}\n" +
"\t}\r\n\r\n");
} else if ("findByPage".equals(str2[i])) {
sb.append("\t/**\n" +
"\t * 分页显示\n" +
"\t *\n" +
"\t * @param page 对象\n" +
"\t * @return list or null\n" +
"\t */\n" +
"\tprivate List findByPage(Page page) {\n" +
"\t\tList list = "+tableName+"ServiceImpl.findByPage(page);\n" +
"\t\tif (list.size() != 0) {\n" +
"\t\t\treturn list;\n" +
"\t\t} else {\n" +
"\t\t\treturn null;\n" +
"\t\t}\n" +
"\t}\r\n\r\n");
} else {
sb.append("\t/**\n" +
"\t * "+str1[i]+"\n" +
"\t *\n" +
"\t * @param "+tableName+" 对象\n" +
"\t * @return String or null\n" +
"\t */\n" +
"\tprivate String "+str2[i]+"("+initcap(tableName)+" "+tableName+") {\n" +
"\t\tInteger update = "+tableName+"ServiceImpl.update("+tableName+");\n" +
"\t\tif (update != null) {\n" +
"\t\t\treturn \""+str1[i]+"成功\";\n" +
"\t\t} else {\n" +
"\t\t\treturn null;\n" +
"\t\t}\n" +
"\t}\r\n\r\n");
}
}
sb.append("\t/**\n" +
"\t * 获取request的值\n" +
"\t *\n" +
"\t * @param request 数据\n" +
"\t * @return " + initcap(tableName) + " 对象\n" +
"\t */\n" +
"\tprivate " + initcap(tableName) + " gettingData(HttpServletRequest request) {\r\n");
sb.append("\t\t// 获取数据\r\n");
for (String colName : colNames) {
sb.append("\t\tString " + colName + " = request.getParameter(\"" + colName + "\");\r\n");
}
sb.append("\t\t// 创建对象并赋值\r\n");
sb.append("\t\t" + initcap(tableName) + " " + tableName + " = new " + initcap(tableName) + "();\r\n");
for (int i = 0; i < colNames.length; i++) {
sb.append("\t\t");
if ("int".equals(sqlType2JavaType(colTypes[i]))) {
sb.append("if (" + colNames[i] + " != null) {\r\n\t\t\t" + tableName + ".set" + initcap(colNames[i]) + "(Integer.parseInt(" + colNames[i] + "));\r\n\t\t}");
} else if ("double".equals(sqlType2JavaType(colTypes[i]))) {
sb.append("if (" + colNames[i] + " != null) {\r\n\t\t\t" + tableName + ".set" + initcap(colNames[i]) + "(Double.parseDouble(" + colNames[i] + "));\r\n\t\t}");
} else if ("Date".equals(sqlType2JavaType(colTypes[i]))) {
sb.append("if (" + colNames[i] + " != null) {\r\n\t\t\t" + tableName + ".set" + initcap(colNames[i]) + "(Date.valueOf(" + colNames[i] + "));\r\n\t\t}");
} else {
sb.append("if (" + colNames[i] + " != null) {\r\n\t\t\t" + tableName + ".set" + initcap(colNames[i]) + "(" + colNames[i] + ");\r\n\t\t}");
}
sb.append("\r\n");
}
sb.append("\t\treturn " + tableName + ";\r\n");
sb.append("\t}\r\n\r\n");
sb.append("\t/**\r\n" +
"\t * 分页\r\n" +
"\t *\r\n" +
"\t * @param page 分页数据对象\r\n" +
"\t * @param request 获取数据\r\n" +
"\t * @return Page 分页数据对象\r\n" +
"\t */\r\n" +
"\tprivate static Page page(Page page, HttpServletRequest request) {\r\n" +
"\t\t// 获取分页数据\r\n" +
"\t\tString currentPage = request.getParameter(\"currentPage\");\r\n" +
"\t\tString pageSize = request.getParameter(\"pageSize\");\r\n" +
"\t\t// 判断\r\n" +
"\t\tif (currentPage == null) {\r\n" +
"\t\t\tpage.setCurrentPage(1);\r\n" +
"\t\t} else {\r\n" +
"\t\t\tpage.setCurrentPage(Integer.parseInt(currentPage));\r\n" +
"\t\t}\r\n" +
"\t\tif (pageSize == null) {\r\n" +
"\t\t\tpage.setPageSize(10);\r\n" +
"\t\t} else {\r\n" +
"\t\t\tpage.setPageSize(Integer.parseInt(pageSize));\r\n" +
"\t\t}\r\n" +
"\t\treturn page;\r\n" +
"\t}\r\n" +
"\r\n" +
"\t@Override\r\n" +
"\tprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n" +
"\t\tdoPost(request, response);\r\n" +
"\t}\r\n");
}
/*************************************
* 功能:将输入字符串的首字母改成大写
*
* @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;//返回翻译结果
// }
}