|
|
@@ -0,0 +1,561 @@
|
|
|
+package com.dapp.moviewebsite.common.utils;
|
|
|
+
|
|
|
+import com.dapp.moviewebsite.common.utils.ErrorUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileWriter;
|
|
|
+import java.io.PrintWriter;
|
|
|
+import java.sql.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 自动生成代码
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+public class CodeDOM {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构造参数,出入表名
|
|
|
+ */
|
|
|
+ private CodeDOM(String tableName) {
|
|
|
+ this.tableName = tableName;
|
|
|
+ basePackage_ = "com\\dapp\\moviewebsite\\app\\";
|
|
|
+ package_ = basePackage_ + StringUtil.camelCaseName(tableName) + "\\";
|
|
|
+ //System.getProperty("user.dir") 获取的是项目所在路径,如果我们是子项目,则需要添加一层路径
|
|
|
+ basePath = System.getProperty("user.dir") + "\\src\\main\\java\\" + package_;
|
|
|
+ basePackage_ = "com\\dapp\\moviewebsite\\";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据连接相关
|
|
|
+ */
|
|
|
+ private static final String URL = "jdbc:mysql://42.192.165.168:3306/dapp_ms?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&useSSL=false&serverTimezone=GMT%2b8";
|
|
|
+ private static final String USERNAME = "root";
|
|
|
+ private static final String PASSWORD = "9ab8fad748dead93";
|
|
|
+ private static final String DRIVER_CLASSNAME = "com.mysql.jdbc.Driver";
|
|
|
+ /**
|
|
|
+ * 表名
|
|
|
+ */
|
|
|
+ private String tableName;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 基础路径
|
|
|
+ */
|
|
|
+ private String basePackage_;
|
|
|
+ private String package_;
|
|
|
+ private String basePath;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建pojo实体类
|
|
|
+ */
|
|
|
+ private void createPojo(List<TableInfo> tableInfos) {
|
|
|
+ File file = FileUtil.createFile(basePath + "pojo\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ".java");
|
|
|
+ StringBuffer stringBuffer = new StringBuffer();
|
|
|
+ stringBuffer.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "pojo;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import lombok.Data;\n" +
|
|
|
+ "import javax.persistence.*;\n" +
|
|
|
+ "import java.io.Serializable;\n" +
|
|
|
+ "import java.util.Date;\n" +
|
|
|
+ "\n" +
|
|
|
+ "@Entity\n" +
|
|
|
+ "@Table(name = \"" + tableName + "\")\n" +
|
|
|
+ "@Data\n" +
|
|
|
+ "public class " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + " implements Serializable {\n"
|
|
|
+ );
|
|
|
+ //遍历设置属性
|
|
|
+ for (TableInfo tableInfo : tableInfos) {
|
|
|
+ //主键
|
|
|
+ if ("PRI".equals(tableInfo.getColumnKey())) {
|
|
|
+ stringBuffer.append(" @Id\n");
|
|
|
+ }
|
|
|
+ //自增
|
|
|
+ if ("auto_increment".equals(tableInfo.getExtra())) {
|
|
|
+ stringBuffer.append(" @GeneratedValue(strategy= GenerationType.IDENTITY)\n");
|
|
|
+ }
|
|
|
+ stringBuffer.append(" private " + StringUtil.typeMapping(tableInfo.getDataType()) + " " + StringUtil.camelCaseName(tableInfo.getColumnName()) + ";//" + tableInfo.getColumnComment() + "\n\n");
|
|
|
+ }
|
|
|
+ stringBuffer.append("}");
|
|
|
+ FileUtil.fileWriter(file, stringBuffer);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建vo类
|
|
|
+ */
|
|
|
+ private void createVo(List<TableInfo> tableInfos) {
|
|
|
+ File file = FileUtil.createFile(basePath + "vo\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo.java");
|
|
|
+ StringBuffer stringBuffer = new StringBuffer();
|
|
|
+ stringBuffer.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "vo;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import "+ basePackage_.replaceAll("\\\\", ".") +" common.pojo.PageCondition;"+
|
|
|
+ "import lombok.Data;\n" +
|
|
|
+ "import java.io.Serializable;\n" +
|
|
|
+ "import java.util.Date;\n" +
|
|
|
+ "\n" +
|
|
|
+ "@Data\n" +
|
|
|
+ "public class " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo extends PageCondition implements Serializable {\n"
|
|
|
+ );
|
|
|
+ //遍历设置属性
|
|
|
+ for (TableInfo tableInfo : tableInfos) {
|
|
|
+ stringBuffer.append(" private " + StringUtil.typeMapping(tableInfo.getDataType()) + " " + StringUtil.camelCaseName(tableInfo.getColumnName()) + ";//" + tableInfo.getColumnComment() + "\n\n");
|
|
|
+ }
|
|
|
+ stringBuffer.append("}");
|
|
|
+ FileUtil.fileWriter(file, stringBuffer);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ File fileSimple = FileUtil.createFile(basePath + "vo\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "SimpleVo.java");
|
|
|
+ StringBuffer stringBufferSimple = new StringBuffer();
|
|
|
+ stringBufferSimple.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "vo;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import lombok.Data;\n" +
|
|
|
+ "import java.io.Serializable;\n" +
|
|
|
+ "import java.util.Date;\n" +
|
|
|
+ "\n" +
|
|
|
+ "@Data\n" +
|
|
|
+ "public class " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "SimpleVo implements Serializable {\n"
|
|
|
+ );
|
|
|
+ //遍历设置属性
|
|
|
+ for (TableInfo tableInfo : tableInfos) {
|
|
|
+ stringBufferSimple.append(" private " + StringUtil.typeMapping(tableInfo.getDataType()) + " " + StringUtil.camelCaseName(tableInfo.getColumnName()) + ";//" + tableInfo.getColumnComment() + "\n\n");
|
|
|
+ }
|
|
|
+ stringBufferSimple.append("}");
|
|
|
+ FileUtil.fileWriter(fileSimple, stringBufferSimple);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建repository类
|
|
|
+ */
|
|
|
+ private void createRepository(List<TableInfo> tableInfos) {
|
|
|
+ File file = FileUtil.createFile(basePath + "repository\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Repository.java");
|
|
|
+ StringBuffer stringBuffer = new StringBuffer();
|
|
|
+ String t = "String";
|
|
|
+ //遍历属性
|
|
|
+ for (TableInfo tableInfo : tableInfos) {
|
|
|
+ //主键
|
|
|
+ if ("PRI".equals(tableInfo.getColumnKey())) {
|
|
|
+ t = StringUtil.typeMapping(tableInfo.getDataType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stringBuffer.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "repository;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import " + basePackage_.replaceAll("\\\\", ".") + "common.repository.*;\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "pojo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ";\n" +
|
|
|
+ "import org.springframework.stereotype.Repository;\n" +
|
|
|
+ "\n" +
|
|
|
+ "@Repository\n" +
|
|
|
+ "public interface " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Repository extends CommonRepository<" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ", " + t + "> {"
|
|
|
+ );
|
|
|
+ stringBuffer.append("\n");
|
|
|
+ stringBuffer.append("}");
|
|
|
+ FileUtil.fileWriter(file, stringBuffer);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建service类
|
|
|
+ */
|
|
|
+ private void createService(List<TableInfo> tableInfos) {
|
|
|
+ File file = FileUtil.createFile(basePath + "service\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Service.java");
|
|
|
+ StringBuffer stringBuffer = new StringBuffer();
|
|
|
+ String t = "String";
|
|
|
+ //遍历属性
|
|
|
+ for (TableInfo tableInfo : tableInfos) {
|
|
|
+ //主键
|
|
|
+ if ("PRI".equals(tableInfo.getColumnKey())) {
|
|
|
+ t = StringUtil.typeMapping(tableInfo.getDataType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stringBuffer.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "service;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import " + basePackage_.replaceAll("\\\\", ".") + "common.service.*;\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "pojo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ";\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "vo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo;\n" +
|
|
|
+ "\n" +
|
|
|
+ "public interface " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Service extends CommonService<" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo, " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ", " + t + "> {"
|
|
|
+ );
|
|
|
+ stringBuffer.append("\n");
|
|
|
+ stringBuffer.append("}");
|
|
|
+ FileUtil.fileWriter(file, stringBuffer);
|
|
|
+
|
|
|
+ //Impl
|
|
|
+ File file1 = FileUtil.createFile(basePath + "service\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "ServiceImpl.java");
|
|
|
+ StringBuffer stringBuffer1 = new StringBuffer();
|
|
|
+ stringBuffer1.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "service;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import " + basePackage_.replaceAll("\\\\", ".") + "common.service.*;\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "pojo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ";\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "vo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo;\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "repository." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Repository;\n" +
|
|
|
+ "import org.springframework.beans.factory.annotation.Autowired;\n" +
|
|
|
+ "import org.springframework.stereotype.Service;\n" +
|
|
|
+ "import org.springframework.transaction.annotation.Transactional;\n" +
|
|
|
+ "import javax.persistence.EntityManager;\n" +
|
|
|
+ "import javax.persistence.PersistenceContext;\n" +
|
|
|
+ "\n" +
|
|
|
+ "@Service\n" +
|
|
|
+ "@Transactional\n" +
|
|
|
+ "public class " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "ServiceImpl extends CommonServiceImpl<" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo, " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ", " + t + "> implements " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Service{"
|
|
|
+ );
|
|
|
+ stringBuffer1.append("\n\n");
|
|
|
+ stringBuffer1.append(
|
|
|
+ " @PersistenceContext\n" +
|
|
|
+ " private EntityManager em;\n");
|
|
|
+
|
|
|
+ stringBuffer1.append("" +
|
|
|
+ " @Autowired\n" +
|
|
|
+ " private " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Repository " + StringUtil.camelCaseName(tableName) + "Repository;\n");
|
|
|
+ stringBuffer1.append("}");
|
|
|
+ FileUtil.fileWriter(file1, stringBuffer1);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建controller类
|
|
|
+ */
|
|
|
+ private void createController(List<TableInfo> tableInfos) {
|
|
|
+ File file = FileUtil.createFile(basePath + "controller\\" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Controller.java");
|
|
|
+ StringBuffer stringBuffer = new StringBuffer();
|
|
|
+ String t = "String";
|
|
|
+ //遍历属性
|
|
|
+ for (TableInfo tableInfo : tableInfos) {
|
|
|
+ //主键
|
|
|
+ if ("PRI".equals(tableInfo.getColumnKey())) {
|
|
|
+ t = StringUtil.typeMapping(tableInfo.getDataType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stringBuffer.append(
|
|
|
+ "package " + package_.replaceAll("\\\\", ".") + "controller;\n" +
|
|
|
+ "\n" +
|
|
|
+ "import " + basePackage_.replaceAll("\\\\", ".") + "common.controller.*;\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "pojo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ";\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "vo." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo;\n" +
|
|
|
+ "import " + package_.replaceAll("\\\\", ".") + "service." + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Service;\n" +
|
|
|
+ "import org.springframework.beans.factory.annotation.Autowired;\n" +
|
|
|
+ "import org.springframework.web.bind.annotation.*;\n" +
|
|
|
+ "\n" +
|
|
|
+ "@RestController\n" +
|
|
|
+ "@RequestMapping(\"/" + StringUtil.camelCaseName(tableName) + "/\")\n" +
|
|
|
+ "public class " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Controller extends CommonController<" + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Vo, " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + ", " + t + "> {"
|
|
|
+ );
|
|
|
+ stringBuffer.append("\n");
|
|
|
+ stringBuffer.append("" +
|
|
|
+ " @Autowired\n" +
|
|
|
+ " private " + StringUtil.captureName(StringUtil.camelCaseName(tableName)) + "Service " + StringUtil.camelCaseName(tableName) + "Service;\n");
|
|
|
+ stringBuffer.append("}");
|
|
|
+ FileUtil.fileWriter(file, stringBuffer);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取表结构信息
|
|
|
+ */
|
|
|
+ private List<TableInfo> getTableInfo() {
|
|
|
+ Connection conn = null;
|
|
|
+ PreparedStatement ps = null;
|
|
|
+ ResultSet rs = null;
|
|
|
+ ArrayList<TableInfo> list = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ conn = DBConnectionUtil.getConnection();
|
|
|
+ String sql = "select column_name,data_type,column_comment,column_key,extra from information_schema.columns where table_schema = (select database()) and table_name=?";
|
|
|
+ ps = conn.prepareStatement(sql);
|
|
|
+ ps.setString(1, tableName);
|
|
|
+ rs = ps.executeQuery();
|
|
|
+ while (rs.next()) {
|
|
|
+ TableInfo tableInfo = new TableInfo();
|
|
|
+ //列名,全部转为小写
|
|
|
+ tableInfo.setColumnName(rs.getString("column_name").toLowerCase());
|
|
|
+ //列类型
|
|
|
+ tableInfo.setDataType(rs.getString("data_type"));
|
|
|
+ //列注释
|
|
|
+ tableInfo.setColumnComment(rs.getString("column_comment"));
|
|
|
+ //主键
|
|
|
+ tableInfo.setColumnKey(rs.getString("column_key"));
|
|
|
+ //主键类型
|
|
|
+ tableInfo.setExtra(rs.getString("extra"));
|
|
|
+ list.add(tableInfo);
|
|
|
+ }
|
|
|
+ } catch (SQLException e) {
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ } finally {
|
|
|
+ assert rs != null;
|
|
|
+ DBConnectionUtil.close(conn, ps, rs);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * file工具类
|
|
|
+ */
|
|
|
+ private static class FileUtil {
|
|
|
+ /**
|
|
|
+ * 创建文件
|
|
|
+ *
|
|
|
+ * @param pathNameAndFileName 路径跟文件名
|
|
|
+ * @return File对象
|
|
|
+ */
|
|
|
+ private static File createFile(String pathNameAndFileName) {
|
|
|
+ File file = new File(pathNameAndFileName);
|
|
|
+ try {
|
|
|
+ //获取父目录
|
|
|
+ File fileParent = file.getParentFile();
|
|
|
+ if (!fileParent.exists()) {
|
|
|
+ fileParent.mkdirs();
|
|
|
+ }
|
|
|
+ //创建文件
|
|
|
+ if (!file.exists()) {
|
|
|
+ file.createNewFile();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ file = null;
|
|
|
+ System.err.println("新建文件操作出错");
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ }
|
|
|
+ return file;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 字符流写入文件
|
|
|
+ *
|
|
|
+ * @param file file对象
|
|
|
+ * @param stringBuffer 要写入的数据
|
|
|
+ */
|
|
|
+ private static void fileWriter(File file, StringBuffer stringBuffer) {
|
|
|
+ //字符流
|
|
|
+ try {
|
|
|
+ FileWriter resultFile = new FileWriter(file, false);//true,则追加写入 false,则覆盖写入
|
|
|
+ PrintWriter myFile = new PrintWriter(resultFile);
|
|
|
+ //写入
|
|
|
+ myFile.println(stringBuffer.toString());
|
|
|
+
|
|
|
+ myFile.close();
|
|
|
+ resultFile.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ System.err.println("写入操作出错");
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 字符串处理工具类
|
|
|
+ */
|
|
|
+ private static class StringUtil {
|
|
|
+ /**
|
|
|
+ * 数据库类型->JAVA类型
|
|
|
+ *
|
|
|
+ * @param dbType 数据库类型
|
|
|
+ * @return JAVA类型
|
|
|
+ */
|
|
|
+ private static String typeMapping(String dbType) {
|
|
|
+ String javaType;
|
|
|
+ if ("int|integer|tinyint".contains(dbType)) {
|
|
|
+ javaType = "Integer";
|
|
|
+ } else if ("float|double|decimal|real".contains(dbType)) {
|
|
|
+ javaType = "Double";
|
|
|
+ } else if ("date|time|datetime|timestamp".contains(dbType)) {
|
|
|
+ javaType = "Date";
|
|
|
+ } else {
|
|
|
+ javaType = "String";
|
|
|
+ }
|
|
|
+ return javaType;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 驼峰转换为下划线
|
|
|
+ */
|
|
|
+ public static String underscoreName(String camelCaseName) {
|
|
|
+ StringBuilder result = new StringBuilder();
|
|
|
+ if (camelCaseName != null && camelCaseName.length() > 0) {
|
|
|
+ result.append(camelCaseName.substring(0, 1).toLowerCase());
|
|
|
+ for (int i = 1; i < camelCaseName.length(); i++) {
|
|
|
+ char ch = camelCaseName.charAt(i);
|
|
|
+ if (Character.isUpperCase(ch)) {
|
|
|
+ result.append("_");
|
|
|
+ result.append(Character.toLowerCase(ch));
|
|
|
+ } else {
|
|
|
+ result.append(ch);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 首字母大写
|
|
|
+ */
|
|
|
+ static String captureName(String name) {
|
|
|
+ char[] cs = name.toCharArray();
|
|
|
+ cs[0] -= 32;
|
|
|
+ return String.valueOf(cs);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下划线转换为驼峰
|
|
|
+ */
|
|
|
+ static String camelCaseName(String underscoreName) {
|
|
|
+ StringBuilder result = new StringBuilder();
|
|
|
+ if (underscoreName != null && underscoreName.length() > 0) {
|
|
|
+ boolean flag = false;
|
|
|
+ for (int i = 0; i < underscoreName.length(); i++) {
|
|
|
+ char ch = underscoreName.charAt(i);
|
|
|
+ if ("_".charAt(0) == ch) {
|
|
|
+ flag = true;
|
|
|
+ } else {
|
|
|
+ if (flag) {
|
|
|
+ result.append(Character.toUpperCase(ch));
|
|
|
+ flag = false;
|
|
|
+ } else {
|
|
|
+ result.append(ch);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * JDBC连接数据库工具类
|
|
|
+ */
|
|
|
+ private static class DBConnectionUtil {
|
|
|
+
|
|
|
+ static {
|
|
|
+ // 1、加载驱动
|
|
|
+ try {
|
|
|
+ Class.forName(DRIVER_CLASSNAME);
|
|
|
+ } catch (ClassNotFoundException e) {
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回一个Connection连接
|
|
|
+ */
|
|
|
+ static Connection getConnection() {
|
|
|
+ Connection conn = null;
|
|
|
+ // 2、连接数据库
|
|
|
+ try {
|
|
|
+ conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
|
|
|
+ } catch (SQLException e) {
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ }
|
|
|
+ return conn;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关闭Connection,Statement连接
|
|
|
+ */
|
|
|
+ public static void close(Connection conn, Statement stmt) {
|
|
|
+ try {
|
|
|
+ conn.close();
|
|
|
+ stmt.close();
|
|
|
+ } catch (SQLException e) {
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关闭Connection,Statement,ResultSet连接
|
|
|
+ */
|
|
|
+ public static void close(Connection conn, Statement stmt, ResultSet rs) {
|
|
|
+ try {
|
|
|
+ close(conn, stmt);
|
|
|
+ rs.close();
|
|
|
+ } catch (SQLException e) {
|
|
|
+ //输出到日志文件中
|
|
|
+ log.error(ErrorUtil.errorInfoToString(e));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 表结构行信息实体类
|
|
|
+ */
|
|
|
+ private class TableInfo {
|
|
|
+ private String columnName;
|
|
|
+ private String dataType;
|
|
|
+ private String columnComment;
|
|
|
+ private String columnKey;
|
|
|
+ private String extra;
|
|
|
+
|
|
|
+ TableInfo() {
|
|
|
+ }
|
|
|
+
|
|
|
+ String getColumnName() {
|
|
|
+ return columnName;
|
|
|
+ }
|
|
|
+
|
|
|
+ void setColumnName(String columnName) {
|
|
|
+ this.columnName = columnName;
|
|
|
+ }
|
|
|
+
|
|
|
+ String getDataType() {
|
|
|
+ return dataType;
|
|
|
+ }
|
|
|
+
|
|
|
+ void setDataType(String dataType) {
|
|
|
+ this.dataType = dataType;
|
|
|
+ }
|
|
|
+
|
|
|
+ String getColumnComment() {
|
|
|
+ return columnComment;
|
|
|
+ }
|
|
|
+
|
|
|
+ void setColumnComment(String columnComment) {
|
|
|
+ this.columnComment = columnComment;
|
|
|
+ }
|
|
|
+
|
|
|
+ String getColumnKey() {
|
|
|
+ return columnKey;
|
|
|
+ }
|
|
|
+
|
|
|
+ void setColumnKey(String columnKey) {
|
|
|
+ this.columnKey = columnKey;
|
|
|
+ }
|
|
|
+
|
|
|
+ String getExtra() {
|
|
|
+ return extra;
|
|
|
+ }
|
|
|
+
|
|
|
+ void setExtra(String extra) {
|
|
|
+ this.extra = extra;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 快速创建,供外部调用,调用之前先设置一下项目的基础路径
|
|
|
+ */
|
|
|
+ private String create() {
|
|
|
+ List<TableInfo> tableInfo = getTableInfo();
|
|
|
+ createPojo(tableInfo);
|
|
|
+ createVo(tableInfo);
|
|
|
+ createRepository(tableInfo);
|
|
|
+ createService(tableInfo);
|
|
|
+ createController(tableInfo);
|
|
|
+ System.out.println("生成路径位置:" + basePath);
|
|
|
+ return tableName + " 后台代码生成完毕!";
|
|
|
+ }
|
|
|
+
|
|
|
+ //public static void main(String[] args) {
|
|
|
+ // //"app_user","app_favorite","app_viewing_records","app_videos","app_user_member","app_user_tran"
|
|
|
+ // String[] tables = {};
|
|
|
+ // for (String table : tables) {
|
|
|
+ // String msg = new CodeDOM(table).create();
|
|
|
+ // System.out.println(msg);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+}
|