使用idea 新創建項目
然后 新創建 java 、resources 文件夾......
圖上是項目結構
java文件夾下的 文件夾 命名規范 com.nf147(組織名)+ oukele(作者)
然后將 自動生成類 放入 其中 ,運行 ,按照步驟進行操作
每操作完成一步 都需要 刷新一下 maven項目 如:
generatorConfig.xml 文件生成完后 ,刷新maven項目,然后雙擊紅色箭頭處后,自動生成 entity dao mapper
自動生成類:

package com.nf147.oukele; import java.io.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 自動生成SSM框架需要的東西 * * @author OUKELE * @create 2019-03-13 10:57 */ public class Generate { // 當前項目路徑 static String projectPath = System.getProperty("user.dir"); //包名 //static String Package ="com.oukele.demo"; //數據庫驅動 只支持 mariadb數據庫的) static String drive = "org.mariadb.jdbc.Driver"; //URL static String url = "jdbc:mariadb://localhost:3306/test"; //數據庫賬號 static String user = "oukele"; //數據庫密碼 static String password = "oukele"; //組織名 用於自動生成 dao 、mapper_xml、entity static String Package = "com.nf147.oukele"; //項目名 static String projectName = "demo1"; public static void main(String[] args) { Use(); } //命令式 調用 private static void Use() { System.out.println("\t\t請輸入命令\t\t\n" + "輸入 1 則生成 pom.xml 文件\n" + "輸入 2 則生成 generatorConfig.xml 文件\n" + "輸入 3 則生成 Spring、SpringMVC等 相關xml 文件\n" + "輸入 4 則生成 service、serviceIpml、controller\n" + "輸入 5 則 刪除自動生成文件,避免污染項目\n" + "=================================================="); int number = 0; Scanner in = new Scanner(System.in); System.out.println("請輸入你的命令:"); number = in.nextInt(); switch (number) { case 1: generate_pomXML(); break; case 2: generate_generatorConfig(); break; case 3: start_1(); System.out.println("請刷新一下 項目,使用 Generator插件 生成 dao、entity、mapper文件夾.. "); break; case 4: start(); break; case 5: del(); del_0(); System.out.println(" 自動生成文件已刪除......"); System.out.println(" 請刷新 maven項目,然后盡情的使用吧....."); break; default: System.out.println("沒有這個命令....."); break; } } //生成 自動配置 pom.xml 文件 public static void generate_pomXML() { File f = new File(projectPath + File.separator + "/pom.xml"); try { OutputStream out = new FileOutputStream(f); StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + " xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n" + " <modelVersion>4.0.0</modelVersion>\n" + "\n" + " <!--組織名-->\n" + " <groupId>" + Package + "</groupId>\n" + " <!--項目名-->\n" + " <artifactId>" + projectName + "</artifactId>\n" + " <!--版本信息-->\n" + " <version>1.0</version>\n" + " <!--項目類型-->\n" + " <packaging>war</packaging>\n" + "\n" + "\n" + " <!--版本信息管理-->\n" + " <properties>\n" + " <spring.version>5.1.2.RELEASE</spring.version>\n" + " <springmvc.version>5.1.2.RELEASE</springmvc.version>\n" + " <!--項目構建編碼-->\n" + " <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n" + " <!-- maven 編譯資源 版本 -->\n" + " <maven.compiler.source>1.8</maven.compiler.source>\n" + " <!-- maven 編譯目標版本 -->\n" + " <maven.compiler.target>1.8</maven.compiler.target>\n" + " <!-- maven 編譯插件版本 -->\n" + " <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>\n" + " </properties>\n" + "\n" + " <!--jar包的依賴-->\n" + " <dependencies>\n" + " <!--Spring 的依賴-->\n" + " <dependency>\n" + " <groupId>org.springframework</groupId>\n" + " <artifactId>spring-web</artifactId>\n" + " <version>${spring.version}</version>\n" + " </dependency>\n" + " <dependency>\n" + " <groupId>org.springframework</groupId>\n" + " <artifactId>spring-aop</artifactId>\n" + " <version>${spring.version}</version>\n" + " </dependency>\n" + " <dependency>\n" + " <groupId>org.springframework</groupId>\n" + " <artifactId>spring-jdbc</artifactId>\n" + " <version>${spring.version}</version>\n" + " </dependency>\n" + " <dependency>\n" + " <groupId>org.springframework</groupId>\n" + " <artifactId>spring-test</artifactId>\n" + " <version>${spring.version}</version>\n" + " <scope>test</scope>\n" + " </dependency>\n" + "\n" + " <!--Spring MVC 的依賴-->\n" + " <dependency>\n" + " <groupId>org.springframework</groupId>\n" + " <artifactId>spring-webmvc</artifactId>\n" + " <version>${springmvc.version}</version>\n" + " </dependency>\n" + " <dependency>\n" + " <groupId>org.springframework</groupId>\n" + " <artifactId>spring-web</artifactId>\n" + " <version>${springmvc.version}</version>\n" + " </dependency>\n" + "\n" + " <!--mybatis 的依賴-->\n" + " <dependency>\n" + " <groupId>org.mybatis</groupId>\n" + " <artifactId>mybatis</artifactId>\n" + " <version>3.4.6</version>\n" + " </dependency>\n" + " <dependency>\n" + " <groupId>org.mybatis</groupId>\n" + " <artifactId>mybatis-spring</artifactId>\n" + " <version>1.3.2</version>\n" + " </dependency>\n" + " <!--mybatis 分頁-->\n" + " <dependency>\n" + " <groupId>com.github.pagehelper</groupId>\n" + " <artifactId>pagehelper</artifactId>\n" + " <version>5.1.7</version>\n" + " </dependency>\n" + " <!--c3p0 連接池 -->\n" + " <dependency>\n" + " <groupId>com.mchange</groupId>\n" + " <artifactId>c3p0</artifactId>\n" + " <version>0.9.5.2</version>\n" + " </dependency>\n" + "\n" + " <!--數據庫驅動-->\n" + " <dependency>\n" + " <groupId>org.mariadb.jdbc</groupId>\n" + " <artifactId>mariadb-java-client</artifactId>\n" + " <version>2.3.0</version>\n" + " </dependency>\n" + "\n" + " <!-- Junit 單元測試-->\n" + " <dependency>\n" + " <groupId>junit</groupId>\n" + " <artifactId>junit</artifactId>\n" + " <version>4.12</version>\n" + " <scope>test</scope>\n" + " </dependency>\n" + "\n" + " <!--日志框架 logback-->\n" + " <dependency>\n" + " <groupId>ch.qos.logback</groupId>\n" + " <artifactId>logback-classic</artifactId>\n" + " <version>1.2.3</version>\n" + " <scope>test</scope>\n" + " </dependency>\n" + "\n" + " <!--其他-->\n" + " <!--server 接口 jar包-->\n" + " <dependency>\n" + " <groupId>javax.servlet</groupId>\n" + " <artifactId>javax.servlet-api</artifactId>\n" + " <version>4.0.1</version>\n" + " </dependency>\n" + "\n" + " <dependency>\n" + " <groupId>com.google.code.gson</groupId>\n" + " <artifactId>gson</artifactId>\n" + " <version>2.8.5</version>\n" + " </dependency>\n" + "\n" + " <dependency>\n" + " <groupId>javax.servlet</groupId>\n" + " <artifactId>jstl</artifactId>\n" + " <version>1.2</version>\n" + " </dependency>\n" + " </dependencies>\n" + "\n" + " <build>\n" + " <plugins>\n" + " <plugin>\n" + " <groupId>org.mybatis.generator</groupId>\n" + " <artifactId>mybatis-generator-maven-plugin</artifactId>\n" + " <version>1.3.7</version>\n" + " <!--配置信息-->\n" + " <configuration>\n" + " <!--配置文件-->\n" + " <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>\n" + " <overwrite>true</overwrite>\n" + " </configuration>\n" + " <!--數據庫的驅動的依賴-->\n" + " <dependencies>\n" + " <dependency>\n" + " <groupId>org.mariadb.jdbc</groupId>\n" + " <artifactId>mariadb-java-client</artifactId>\n" + " <version>2.3.0</version>\n" + " </dependency>\n" + " </dependencies>\n" + " </plugin>\n" + "\n" + " </plugins>\n" + " </build>\n" + "\n" + "\n" + "</project>"); out.write(new String(sbf).getBytes()); out.flush(); out.close(); System.out.println("pom.xml 文件 配置成功,請重新刷新一下 maven項目"); } catch (Exception e) { System.out.println("pom.xml 文件 配置失敗,異常信息為:" + e.getMessage()); } } //自動生成 generatorConfig.xml 文件 public static void generate_generatorConfig() { File f = new File(projectPath + File.separator + "/src/main/resources/generatorConfig.xml"); try { if (!f.isFile()) { f.createNewFile(); } OutputStream out = new FileOutputStream(f); StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE generatorConfiguration\n" + " PUBLIC \"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN\"\n" + " \"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd\">\n" + "\n" + "<generatorConfiguration>\n" + "\n" + " <context id=\"default\" targetRuntime=\"MyBatis3Simple\">\n" + " <!--創建class時,對注釋進行控制-->\n" + " <commentGenerator>\n" + " <property name=\"suppressDate\" value=\"true\" />\n" + " <!--去除注釋-->\n" + " <property name=\"suppressAllComments\" value=\"true\"/>\n" + " </commentGenerator>\n" + "\n" + " <!--jdbc的數據庫連接-->\n" + " <jdbcConnection driverClass=\"" + drive + "\"\n" + " connectionURL=\"" + url + "\"\n" + " userId=\"" + user + "\" password=\"" + password + "\">\n" + " </jdbcConnection>\n" + " <!-- Model模型生成器\n" + " targetPackage -> 指定生成的model生成所在的包名\n" + " targetProject -> 指定在該項目下所在的路徑\n" + " -->\n" + " <javaModelGenerator targetPackage=\"" + Package + ".entity\" targetProject=\"src/main/java\">\n" + " <!-- 是否對類CHAR類型的列的數據進行trim操作 -->\n" + " <property name=\"trimStrings\" value=\"true\" />\n" + " </javaModelGenerator>\n" + " <!--Mapper映射文件生成所在的目錄 為每一個數據庫的表生成對應的SqlMap文件-->\n" + " <sqlMapGenerator targetPackage=\"Mapper\" targetProject=\"src/main/resources\"/>\n" + "\n" + " <!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼\n" + " type=\"ANNOTATEDMAPPER\",生成Java Model 和基於注解的Mapper對象\n" + " type=\"MIXEDMAPPER\",生成基於注解的Java Model 和相應的Mapper對象\n" + " type=\"XMLMAPPER\",生成SQLMap XML文件和獨立的Mapper接口\n" + " -->\n" + " <javaClientGenerator type=\"XMLMAPPER\" targetPackage=\"" + Package + ".dao\" targetProject=\"src/main/java\"/>\n" + "\n" + " <!-- tableName 表名 % -> 全部表 -->\n" + " <table tableName=\"%\">\n" + " <generatedKey column=\"id\" sqlStatement=\"Mysql\"/>\n" + " </table>\n" + " </context>\n" + "</generatorConfiguration>"); out.write(new String(sbf).getBytes()); out.flush(); out.close(); System.out.println("generatorConfig.xml 文件創建成功,請刷新一下maven項目"); } catch (Exception e) { System.out.println("generatorConfig.xml 文件創建失敗,異常信息為:" + e.getMessage()); } } /** * 把輸入字符串的首字母改成大寫 * * @param str * @return */ private static String initcap(String str) { char[] ch = str.toCharArray(); if (ch[0] >= 'a' && ch[0] <= 'z') { ch[0] = (char) (ch[0] - 32); } return new String(ch); } /** * 把輸入字符串的首字母改成小寫 * * @param str * @return */ private static String initlow(String str) { char[] ch = str.toCharArray(); if (ch[0] >= 'A' && ch[0] <= 'Z') { ch[0] = (char) (ch[0] + 32); } return new String(ch); } //首字母轉換和下划線轉換 private static String tables(String table) { String[] tables = table.split("_"); table = ""; for (String s : tables) { table += initcap(s); } return table; } //獲取 數據庫中的表名 private static List getTable() { List<String> table_name = new ArrayList<>(); try { Class.forName(drive); Connection connection = DriverManager.getConnection(url, user, password); DatabaseMetaData metaData = connection.getMetaData(); ResultSet tables = metaData.getTables(null, null, null, null); while (tables.next()) { table_name.add(tables(tables.getString("TABLE_NAME"))); } } catch (Exception e) { e.printStackTrace(); } return table_name; } //創建 service 層 /** * @param tableName 表名 */ private static String generate_Service(String tableName) { StringBuffer sbf = new StringBuffer("package " + Package + ".service;\n" + "\n" + "import " + Package + ".entity." + tableName + ";\n" + "\n" + "import java.util.List;\n" + "\n" + "public interface " + tableName + "Service {\n" + "\n" + " /**\n" + " * 刪除操作 根據id\n" + " *\n" + " * @param id\n" + " * @return\n" + " */" + "\n" + " int deleteByPrimaryKey(Integer id);\n" + "\n" + " /**\n" + " * 添加操作\n" + " *\n" + " * @param " + initlow(tableName) + "\n" + " * @return\n" + " */" + "\n" + " int insert(" + tableName + " " + initlow(tableName) + ");\n" + "\n" + " /**\n" + " * 根據id查詢操作\n" + " *\n" + " * @param id\n" + " * @return\n" + " */" + "\n" + " " + tableName + " selectByPrimaryKey(Integer id);\n" + "\n" + " /**\n" + " * 全部查詢操作\n" + " *\n" + " * @return\n" + " */" + "\n" + " List<" + tableName + "> selectAll();\n" + "\n" + " /**\n" + " * 修改操作\n" + " *\n" + " * @param " + initlow(tableName) + "\n" + " * @return\n" + " */" + "\n" + " int updateByPrimaryKey(" + tableName + " " + initlow(tableName) + ");\n" + "}"); return new String(sbf); } /** * 創建ServiceImpl * * @param tableName 數據庫表 */ private static String generate_ServiceImp(String tableName) { String serviceImpl = "package " + Package + ".service.impl;\n" + "\n" + "import " + Package + ".dao." + tableName + "Mapper;\n" + "import " + Package + ".entity." + tableName + ";\n" + "import " + Package + ".service." + tableName + "Service;\n" + "import org.springframework.beans.factory.annotation.Autowired;\n" + "import org.springframework.stereotype.Service;\n" + "\n" + "import java.util.List;\n" + "\n" + "@Service\n" + "public class " + tableName + "ServiceImpl implements " + tableName + "Service {\n" + "\n" + " @Autowired\n" + " private " + tableName + "Mapper " + initlow(tableName) + "Mapper;\n" + "\n" + " /**\n" + " * 刪除操作 根據id刪除\n" + " *\n" + " * @param id\n" + " * @return\n" + " */\n" + " @Override\n" + " public int deleteByPrimaryKey(Integer id) {\n" + " return " + initlow(tableName) + "Mapper.deleteByPrimaryKey(id);\n" + " }\n" + "\n" + " /**\n" + " * 添加操作\n" + " *\n" + " * @param " + initlow(tableName) + "\n" + " * @return\n" + " */\n" + " @Override\n" + " public int insert(" + tableName + " " + initlow(tableName) + ") {\n" + " return " + initlow(tableName) + "Mapper.insert(" + initlow(tableName) + ");\n" + " }\n" + "\n" + " /**\n" + " * 根據id查詢操作\n" + " *\n" + " * @param id\n" + " * @return\n" + " */\n" + " @Override\n" + " public " + tableName + " selectByPrimaryKey(Integer id) {\n" + " return " + initlow(tableName) + "Mapper.selectByPrimaryKey(id);\n" + " }\n" + "\n" + " /**\n" + " * 全部查詢操作\n" + " *\n" + " * @return\n" + " */\n" + " @Override\n" + " public List<" + tableName + "> selectAll() {\n" + " return " + initlow(tableName) + "Mapper.selectAll();\n" + " }\n" + "\n" + " /**\n" + " * 修改操作\n" + " *\n" + " * @param " + initlow(tableName) + "\n" + " * @return\n" + " */\n" + " @Override\n" + " public int updateByPrimaryKey(" + tableName + " " + initlow(tableName) + ") {\n" + " return " + initlow(tableName) + "Mapper.updateByPrimaryKey(" + initlow(tableName) + ");\n" + " }\n" + "}\n"; return serviceImpl; } /** * 創建Controller * * @param tableName 數據庫表 */ private static String generate_Controller(String tableName) { String controller = "package " + Package + ".controller;\n" + "import " + Package + ".entity." + tableName + ";\n" + "import " + Package + ".service.impl." + tableName + "ServiceImpl;\n" + "import org.springframework.beans.factory.annotation.Autowired;\n" + "import org.springframework.web.bind.annotation.*;\n" + "import java.util.List;\n" + "\n" + "@RestController\n" + "@RequestMapping(\"/" + initlow(tableName) + "\")\n" + "public class " + tableName + "Controller {\n" + " @Autowired\n" + " private " + tableName + "ServiceImpl " + initlow(tableName) + "ServiceImpl;\n" + "\n" + " /**\n" + " * 根據id刪除\n" + " * 要求轉入 id\n" + " *\n" + " * @param id\n" + " * @return\n" + " */\n" + " @GetMapping(\"/deleteByPrimaryKey/{id}\")\n" + " public Object deleteByPrimaryKey(@PathVariable(\"id\") int id) {\n" + " try {\n" + "\n" + " return " + initlow(tableName) + "ServiceImpl.deleteByPrimaryKey(id) > 0 ? \"刪除成功\" : \"刪除失敗\";\n" + " } catch (Exception ex) {\n" + " return \"出錯,請重試!\";\n" + " }\n" + " }\n" + "\n" + " /**\n" + " * 添加對象" + initlow(tableName) + "\n" + " *\n" + " * @param " + initlow(tableName) + "\n" + " * @return\n" + " */\n" + " @PostMapping(\"/insert\")\n" + " public Object insert(@RequestBody " + tableName + " " + initlow(tableName) + ") {\n" + " try {\n" + " return " + initlow(tableName) + "ServiceImpl.insert(" + initlow(tableName) + ") > 0 ? \"添加成功!\" : \"添加失敗!\";\n" + " } catch (Exception ex) {\n" + " return \"出錯,請重試!\";\n" + " }\n" + "\n" + " }\n" + "\n" + " /**\n" + " * 根據id查找對象 最多只能返回一個對象\n" + " *\n" + " * @param id \n" + " * @return\n" + " */\n" + " @GetMapping(\"/selectByPrimaryKey/{id}\")\n" + " public Object selectByPrimaryKey(@PathVariable(\"id\") int id) {\n" + " try {\n" + " " + tableName + " " + initlow(tableName) + "1 = " + initlow(tableName) + "ServiceImpl.selectByPrimaryKey(id);\n" + " if (" + initlow(tableName) + "1 == null) {\n" + " return \"無數據\";\n" + " } else {\n" + " return " + initlow(tableName) + "1;\n" + " }\n" + " } catch (Exception ex) {\n" + " return \"出錯,請重試!\";\n" + " }\n" + " }\n" + "\n" + " /**\n" + " * 查詢所有數據\n" + " *\n" + " * @return\n" + " */\n" + " @GetMapping(\"/selectAll\")\n" + " public Object selectAll() {\n" + " //public Result selectAll(@RequestParam(defaultValue = \"1\") int pageNum, @RequestParam(defaultValue = \"10\") int pageSize) {\n" + " try {\n" + " //分頁\n" + " //PageHelper.startPage(pageNum, pageSize);\n" + " List<" + tableName + "> list = " + initlow(tableName) + "ServiceImpl.selectAll();\n" + " if (list == null) {\n" + " return \"無數據\";\n" + " } else {\n" + " // return new Result().success(list, " + initlow(tableName) + "Service.count(\"\"));\n" + " return list;\n" + " }\n" + " } catch (Exception ex) {\n" + " return \"出錯,請重試!\";\n" + " }\n" + " }\n" + "\n" + " /**\n" + " * 根據id修改全部字段\n" + " *\n" + " * @param " + initlow(tableName) + "\n" + " * @return\n" + " */\n" + " @PutMapping(value = \"/updateByPrimaryKey\")\n" + " public Object updateByPrimaryKey(@RequestBody " + tableName + " " + initlow(tableName) + ") {\n" + " try {\n" + " return " + initlow(tableName) + "ServiceImpl.updateByPrimaryKey(" + initlow(tableName) + ") > 0 ? \"修改成功\" : \"修改失敗\";\n" + " } catch (Exception ex) {\n" + " return \"出錯,請重試!\";\n" + " }\n" + "\n" + "\n" + " }\n" + "}\n"; return controller; } //創建 service serviceImp Controller private static void create(File file, String context) { //獲取文件 File parent = file.getParentFile(); //如果不是目錄 if (parent != null) { //創建目錄 parent.mkdirs(); } try { //創建文件 file.createNewFile(); FileWriter fileWriter = null; try { fileWriter = new FileWriter(file); fileWriter.write(context); fileWriter.flush(); fileWriter.close(); } catch (IOException e) { } } catch (IOException e) { System.out.println("創建文件失敗:" + e.getMessage()); } } // 調用入口 private static void start() { String path = projectPath + "/src/main/java/"; String[] split = Package.split("\\."); for (String s : split) { path += s + "/"; } List table = getTable(); for (Object str : table) { create(new File(path + "service/" + str + "Service.java"), generate_Service((String) str)); create(new File(path + "/service" + "/impl/" + str + "ServiceImpl.java"), generate_ServiceImp((String) str)); create(new File(path + "controller/" + str + "Controller.java"), generate_Controller((String) str)); } } //刪除自動生成類 private static void del_0() { String[] clazzName = Thread.currentThread().getStackTrace()[1].getClassName().split("\\."); String path = projectPath + "/src/main/java/"; String[] split = Package.split("\\."); for (String s : split) { path += s + "/"; } File f = new File(path + clazzName[3] + ".java"); f.delete(); System.out.println(clazzName[3] + ".java 文件已經刪除...."); String path1 = projectPath + "/src/main/resources/generatorConfig.xml"; File f1 = new File(path1); f1.delete(); del_build(); } // 刪除 pom.xml 中 build 節點 private static void del_build(){ String propertyPath = System.getProperty("user.dir"); File f = new File(propertyPath + "/pom.xml" ); try { InputStream in = new FileInputStream(f); byte[] arr = new byte[(int) f.length()]; in.read(arr); in.close(); String context = new String(arr); int i = context.indexOf("<build>"); int ii = context.indexOf("</build>") + 8; String replace = context.replace(context.substring(i, ii), ""); OutputStream out = new FileOutputStream(f); out.write(replace.getBytes()); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * ====================================下面是生成配置文件的======================================================= */ //刪除文件 private static void del() { String path = System.getProperty("user.dir") + "/src/main/java/"; String[] split = Package.split("\\."); for (String s : split) { path += s + "/"; } String[] className = Thread.currentThread().getStackTrace()[1].getClassName().split("\\."); File f = new File(path + className[3] + ".java"); f.delete(); } //調用入口 private static void start_1() { String path = System.getProperty("user.dir") + "/src/main/resources/"; String path1 = System.getProperty("user.dir") + "/src/main/webapp/WEB-INF/web.xml"; createFile(path + "jdbc.properties", new String(generate_jdbc())); createFile(path + "mybatis-config.xml", new String(generate_mybatisConfig())); createFile(path + "logback-config.xml", new String(generate_logBack())); createFile(path + "spring-root.xml", new String(generate_springRoot())); createFile(path + "spring-web.xml", new String(generate_springWeb())); createFile(path1, new String(generate_xml())); } private static void createFile(String path, String content) { File f = new File(path); try { f.createNewFile(); OutputStream out = new FileOutputStream(f); out.write(content.getBytes()); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } //自動生成 jdbc.properties 文件 private static StringBuffer generate_jdbc() { StringBuffer sbf = new StringBuffer(); sbf.append("jdbc.driver=org.mariadb.jdbc.Driver\n" + "jdbc.url=" + url + " \n" + "jdbc.username=" + user + "\n" + "jdbc.password=" + password + ""); return sbf; } //自動生成 web.xml 文件 private static StringBuffer generate_xml() { StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<web-app xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + " xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd\"\n" + " version=\"4.0\">\n" + " <!--項目名-->\n" + " <display-name>" + projectName + "</display-name>\n" + "\n" + " <!--配置spring容器-->\n" + " <context-param>\n" + " <param-name>contextConfigLocation</param-name>\n" + " <param-value>classpath:spring-root.xml</param-value>\n" + " </context-param>\n" + " <listener>\n" + " <!--上下文環境偵聽器-->\n" + " <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n" + " </listener>\n" + "\n" + " <!--配置springMVC容器-->\n" + " <servlet>\n" + " <servlet-name>webs</servlet-name>\n" + " <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n" + " <init-param>\n" + " <param-name>contextConfigLocation</param-name>\n" + " <param-value>classpath:spring-web.xml</param-value>\n" + " </init-param>\n" + " <multipart-config>\n" + " <!--上傳文件的大小限制,比如下面表示 5 M-->\n" + " <max-file-size>5242880</max-file-size>\n" + " <!--一次表單提交中文件的大小限制,必須下面代表 10 M -->\n" + " <max-request-size>10485760</max-request-size>\n" + " <!-- 多大的文件會被自動保存到硬盤上。0 代表所有 -->\n" + " <file-size-threshold>0</file-size-threshold>\n" + " </multipart-config>\n" + " </servlet>\n" + " <!--將所有請求攔截下來,交給spring mvc 處理-->\n" + " <servlet-mapping>\n" + " <servlet-name>webs</servlet-name>\n" + " <url-pattern>/</url-pattern>\n" + " </servlet-mapping>\n" + "\n" + " <!--漢字編碼問題-->\n" + " <filter>\n" + " <filter-name>setEncoding</filter-name>\n" + " <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n" + " <init-param>\n" + " <param-name>encoding</param-name>\n" + " <param-value>UTF-8</param-value>\n" + " </init-param>\n" + " </filter>\n" + " <filter-mapping>\n" + " <filter-name>setEncoding</filter-name>\n" + " <url-pattern>/*</url-pattern>\n" + " </filter-mapping>\n" + "</web-app>"); return sbf; } //自動生成 spring-root.xml 文件 private static StringBuffer generate_springRoot() { StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + "<beans xmlns=\"http://www.springframework.org/schema/beans\"\n" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + " xmlns:contxt=\"http://www.springframework.org/schema/context\"\n" + " xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\">\n" + "\n" + " <!--掃描 service 包中所使用注解的類-->\n" + " <contxt:component-scan base-package=\"" + Package + ".service.impl\"/>\n" + "\n" + "\n" + " <!--加載jdbc資源文件-->\n" + " <contxt:property-placeholder location=\"classpath:jdbc.properties\"/>\n" + " <!--配置數據源-->\n" + " <bean id=\"dataSource\" class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n" + " <!--加載數據庫驅動-->\n" + " <property name=\"driverClass\" value=\"${jdbc.driver}\"/>\n" + " <!--連接的數據庫字符串-->\n" + " <property name=\"jdbcUrl\" value=\"${jdbc.url}\"/>\n" + " <!--賬號、密碼-->\n" + " <property name=\"user\" value=\"${jdbc.username}\"/>\n" + " <property name=\"password\" value=\"${jdbc.password}\"/>\n" + " </bean>\n" + "\n" + " <!--配置mybatis-->\n" + " <bean id=\"sqlSessionFactory\" class=\"org.mybatis.spring.SqlSessionFactoryBean\">\n" + " <!--實例化數據源-->\n" + " <property name=\"dataSource\" ref=\"dataSource\"/>\n" + " <!--加載mybatis的配置-->\n" + " <property name=\"configLocation\" value=\"classpath:mybatis-config.xml\"/>\n" + " <!--映射mapper文件-->\n" + " <property name=\"mapperLocations\" value=\"classpath:Mapper/*.xml\"/>\n" + " </bean>\n" + "\n" + " <!--簡化調用-->\n" + " <bean class=\"org.mybatis.spring.mapper.MapperScannerConfigurer\">\n" + " <property name=\"sqlSessionFactoryBeanName\" value=\"sqlSessionFactory\"/>\n" + " <!--加載使用的接口 -->\n" + " <property name=\"basePackage\" value=\"" + Package + ".dao\"/>\n" + " </bean>\n" + "\n" + "</beans>"); return sbf; } //自動生成 spring-web.xml 文件 private static StringBuffer generate_springWeb() { StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + "<beans xmlns=\"http://www.springframework.org/schema/beans\"\n" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + " xmlns:contxt=\"http://www.springframework.org/schema/context\"\n" + " xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n" + " xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n" + "\n" + " <!--掃描web包中的注解-->\n" + " <contxt:component-scan base-package=\"" + Package + ".controller\"/>\n" + "\n" + " <!--啟動 mvc 常用注解-->\n" + " <mvc:annotation-driven ></mvc:annotation-driven>\n" + "\n" + " <!--將所有靜態資源交給server處理-->\n" + " <mvc:default-servlet-handler/>\n" + " \n" + " \n" + " <!--配置視圖器-->\n" + " <!--前后端分離,這里使用不到-->\n" + " <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n" + " <property name=\"viewClass\" value=\"org.springframework.web.servlet.view.JstlView\"/>\n" + " <!--前綴、后綴-->\n" + " <property name=\"prefix\" value=\"/WEB-INF/jsp/\"/>\n" + " <property name=\"suffix\" value=\".jsp\"/>\n" + " </bean>\n" + "\n" + "</beans>"); return sbf; } //自動生成 mybatis-config.xml 文件 private static StringBuffer generate_mybatisConfig() { StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + "<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-config.dtd\">\n" + "\n" + "<configuration>\n" + " <settings>\n" + " <!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 -->\n" + " <setting name=\"useGeneratedKeys\" value=\"true\" />\n" + " <!-- 使用列別名替換列名 默認:true -->\n" + " <setting name=\"useColumnLabel\" value=\"true\" />\n" + " <!-- 開啟駝峰命名轉換:Table {create_time} -> Entity {createTime} -->\n" + " <setting name=\"mapUnderscoreToCamelCase\" value=\"true\" />\n" + " </settings>\n" + " <!--配置分頁插件-->\n" + " <plugins>\n" + " <plugin interceptor=\"com.github.pagehelper.PageInterceptor\" />\n" + " </plugins>\n" + "\n" + "</configuration>"); return sbf; } //自動生成 logback-config.xml 文件 private static StringBuffer generate_logBack() { StringBuffer sbf = new StringBuffer(); sbf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + "<configuration >\n" + " <property name=\"LOG_HOME\" value=\"tp/log\"/>\n" + "\n" + " <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\" >\n" + " <!-- 輸出的格式 -->\n" + " <encoder class=\"ch.qos.logback.classic.encoder.PatternLayoutEncoder\">\n" + " <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}: %msg%n</pattern>-->\n" + " <pattern>\n" + " %msg%n\n" + " </pattern>\n" + "\n" + " </encoder>\n" + " </appender>\n" + "\n" + " <!-- 監控 哪些包中的方法調用 輸出日志 -->\n" + " <logger name=\"" + Package + ".dao\" level=\"DEBUG\" additivity=\"false\">\n" + " <!--<level value=\"INFO\" />-->\n" + " <appender-ref ref=\"STDOUT\" />\n" + " </logger>\n" + "\n" + " <root level=\"error\" additivity=\"false\" >\n" + " <appender-ref ref=\"STDOUT\" />\n" + " </root>\n" + "</configuration>"); return sbf; } }