代码生成器,极大简化你的工作

2024-05-15 14:58

本文主要是介绍代码生成器,极大简化你的工作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码生成器,极大简化你的工作

        在web开发中,模块化开发非常普遍。在最近的毕业设计中,自己基于spring mvc + mybatics + liger ui开发了一个网站,里面也使用模块化来组织代码。于是每一个模块的操作,基本上都是大同小异,无非就是增删改查。下面先观察下代码的包组织结构,以及jsp文件组织结构:如下图所示。

        从图中可以看出,一个模块通常情况下也会有一个相应的jsp文件夹。这样子给代码生成器的开发埋下了伏笔。
        继续观察代码组织结构,我们通常在模块下面又使用dao层,service层,controller层,entity层来组织代码。其中dao层用于访问数据库;service层属于dao层的门面设计模式,通常可以根据业务逻辑需要,调用多个dao层来完成任务;controller层则是controller类,通常由Add、delete、update、list四个controller类,每个类只有一个核心功能;entity层则是实体类,在这个工程里面,将mybatics的mapper类放在这里。下面我们来查看下一个模块的代码组织,如下图所示。

        从图中可以看出,代码命名规则非常的明确,这样子的命名规则,可以很方便的使用代码生成器来生成这些代码。
        为了开发方便,于是花了点时间,写了个代码生成器。该代码生成器的主要目标就是用户给出实体类,则程序自动生成controller、dao、service、mapper、jsp等模板文件。开发者只需要根据业务逻辑需要,将sql放入到mapper中,就能快速完成新模块功能的开发。
        类的开发比较简单,主要就是得到工程所在路径,根据给出entity实体,自动生成dao、service、controller、mapper、jsp等文件。由于该类没什么技术难度,就直接贴代码了。
<span style="font-size:18px;">package net.itaem.autogeneratecode;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;import net.itaem.department.entity.Department;/*** 自动代码生成器* 1、代码生成器需要做的功能:* 给出Entity,生成Mybatics Mapper,生成成Dao层,service层,以及controller层,以及jsp文件* * 生成的这些文件中,全部都是骨架代码,开发时需要根据具体要求添加业务逻辑代码即可* @author luohong 846705189@qq.com 15013336884* */
public class AutomaticGenerateCode {public static void main(String[] args) throws IOException{generateMybaticsMapper(Department.class);generateDao(Department.class);generateService(Department.class);generateController(Department.class);generateJsp(Department.class);	}/*** 生成mybatics的mapper类* @param clazz* */public static void generateMybaticsMapper(Class<?> clazz) throws IOException{String path = path(clazz);String mapperDirectoryName = path.substring(0, path.lastIndexOf("\\")) + File.separator + "entity";File mapperDirectory = new File(mapperDirectoryName);if(!mapperDirectory.exists()){mapperDirectory.mkdir();}String mapperJavaFileName = mapperDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "Mapper.java";File mapperJavaFile = new File(mapperJavaFileName);StringBuilder contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity;");contentBuilder.append("\n\n");contentBuilder.append("import java.util.*;\n");contentBuilder.append("import org.apache.ibatis.annotations.Insert;\n");contentBuilder.append("import org.apache.ibatis.annotations.Select;\n");contentBuilder.append("import org.apache.ibatis.annotations.Results;\n");contentBuilder.append("import org.springframework.stereotype.Repository;\n");contentBuilder.append("import org.apache.ibatis.annotations.Update;\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("@Repository(value = \"" + clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Mapper\"" + ")\n");contentBuilder.append("public interface " + clazz.getSimpleName() + "Mapper"+"{\n\n");contentBuilder.append("    @Select(value = \"请替换成您需要的sql\")\n");contentBuilder.append("    @Results(value = {})\n");contentBuilder.append("    public List<"+clazz.getSimpleName()+"> listAll();");contentBuilder.append("\n\n");contentBuilder.append("    @Select(value = \"请替换成您需要的sql\")\n");contentBuilder.append("    @Results(value = {})\n");contentBuilder.append("    public "+clazz.getSimpleName()+" listBy(String id);");contentBuilder.append("\n\n");contentBuilder.append("    @Insert(\"\")\n");contentBuilder.append("    public void add(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");");contentBuilder.append("\n\n");contentBuilder.append("    @Update(\"\")\n");contentBuilder.append("    public void delete(String id);");contentBuilder.append("\n\n");contentBuilder.append("    @Update(\"\")\n");contentBuilder.append("    public void update(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");");contentBuilder.append("\n}");println(mapperJavaFile, contentBuilder.toString());}/*** 生成Dao代码* @param clazz* */public static void generateDao(Class<?> clazz) throws IOException{generateDaoInterface(clazz);generateDaoImplement(clazz);	}private static void generateDaoInterface(Class<?> clazz) throws IOException{String path = path(clazz);String daoDirectoryName = path.substring(0, path.lastIndexOf("\\")) + File.separator + "dao";File daoDirectory = new File(daoDirectoryName);if(!daoDirectory.exists()){daoDirectory.mkdir();}String daoJavaFileName = daoDirectory.getCanonicalPath() + File.separator + "I" + clazz.getSimpleName() + "Dao.java";File daoJavaFile = new File(daoJavaFileName);StringBuilder contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".dao;");contentBuilder.append("\n\n");contentBuilder.append("import java.util.*;\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("public interface "+"I" + clazz.getSimpleName() + "Dao"+"{\n\n");contentBuilder.append("    public List<"+clazz.getSimpleName()+"> listAll();");contentBuilder.append("\n\n");contentBuilder.append("    public "+clazz.getSimpleName()+" listBy(String id);");contentBuilder.append("\n\n");contentBuilder.append("    public void add(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");");contentBuilder.append("\n\n");contentBuilder.append("    public void delete(String id);");contentBuilder.append("\n\n");contentBuilder.append("    public void update(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");");contentBuilder.append("\n}");println(daoJavaFile, contentBuilder.toString());}private static void generateDaoImplement(Class<?> clazz) throws IOException {String path = path(clazz);String daoDirectoryName = path.substring(0, path.lastIndexOf("\\")) + File.separator + "dao" + File.separator + "impl";File daoDirectory = new File(daoDirectoryName);if(!daoDirectory.exists()){daoDirectory.mkdir();}String daoJavaFileName = daoDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "DaoImpl.java";File daoJavaFile = new File(daoJavaFileName);StringBuilder contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".dao.impl;");contentBuilder.append("\n\n");contentBuilder.append("import java.util.*;\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".dao.I" + clazz.getSimpleName() + "Dao" + ";\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "Mapper" + ";\n");contentBuilder.append("import org.springframework.stereotype.Repository;\n");contentBuilder.append("import javax.annotation.Resource;\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("@Repository\n");contentBuilder.append("public class "+ clazz.getSimpleName() + "DaoImpl implements I" + clazz.getSimpleName() + "Dao" +"{\n\n");String mapperName = clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Mapper";contentBuilder.append("    @Resource(name = \"" + mapperName + "\")\n");contentBuilder.append("    private " + clazz.getSimpleName() + "Mapper " + mapperName + ";\n\n");contentBuilder.append("    public List<"+clazz.getSimpleName()+"> listAll(){\n");contentBuilder.append("        return " + mapperName+ ".listAll()" + ";");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public "+clazz.getSimpleName()+" listBy(String id){\n");contentBuilder.append("        return " + mapperName + ".listBy(id)" + ";");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public void add(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + "){\n");contentBuilder.append("        " + mapperName + ".add(" + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + ");" + "");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public void delete(String id){\n");contentBuilder.append("        " + mapperName + ".delete(id);");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public void update(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + "){\n");contentBuilder.append("        " + mapperName + ".update(" + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + ");" + "");contentBuilder.append("\n    }\n");contentBuilder.append("}");println(daoJavaFile, contentBuilder.toString());}/*** 生成Service代码* @param clazz* */public static void generateService(Class<?> clazz) throws IOException{generateServiceInterface(clazz);generateServiceImplement(clazz);	}private static void generateServiceInterface(Class<?> clazz) throws IOException{String path = path(clazz);String serviceDirectoryName = path.substring(0, path.lastIndexOf("\\")) + File.separator + "service";File serviceDirectory = new File(serviceDirectoryName);if(!serviceDirectory.exists()){serviceDirectory.mkdir();}String serviceJavaFileName = serviceDirectory.getCanonicalPath() + File.separator + "I" + clazz.getSimpleName() + "Service.java";File serviceJavaFile = new File(serviceJavaFileName);StringBuilder contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".service;");contentBuilder.append("\n\n");contentBuilder.append("import java.util.*;\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("public interface "+"I" + clazz.getSimpleName() + "Service"+"{\n\n");contentBuilder.append("    public List<"+clazz.getSimpleName()+"> listAll();");contentBuilder.append("\n\n");contentBuilder.append("    public "+clazz.getSimpleName()+" listBy(String id);");contentBuilder.append("\n\n");contentBuilder.append("    public void add(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");");contentBuilder.append("\n\n");contentBuilder.append("    public void delete(String id);");contentBuilder.append("\n\n");contentBuilder.append("    public void update(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");");contentBuilder.append("\n}");println(serviceJavaFile, contentBuilder.toString());}private static void generateServiceImplement(Class<?> clazz) throws IOException {String path = path(clazz);String serviceDirectoryName = path.substring(0, path.lastIndexOf("\\")) + File.separator + "service" + File.separator + "impl";File serviceDirectory = new File(serviceDirectoryName);if(!serviceDirectory.exists()){serviceDirectory.mkdir();}String serviceJavaFileName = serviceDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "ServiceImpl.java";File daoJavaFile = new File(serviceJavaFileName);StringBuilder contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".service.impl;");contentBuilder.append("\n\n");contentBuilder.append("import java.util.*;\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName()+ "Service" + ";\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".dao.I" + clazz.getSimpleName()+ "Dao" + ";\n");contentBuilder.append("import org.springframework.stereotype.Service;\n");contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired;\n");contentBuilder.append("\n\n");contentBuilder.append("@Service\n");contentBuilder.append("public class "+ clazz.getSimpleName() + "ServiceImpl implements I" + clazz.getSimpleName() + "Service" + "{\n\n");String daoName = clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + "Dao";contentBuilder.append("    @Autowired\n");contentBuilder.append("    private I" + clazz.getSimpleName() + "Dao " + daoName + ";\n\n");contentBuilder.append("    public List<"+clazz.getSimpleName()+"> listAll(){\n");contentBuilder.append("        return " + daoName + ".listAll()" + ";");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public "+clazz.getSimpleName()+" listBy(String id){\n");contentBuilder.append("        return " + daoName + ".listBy(id)" + ";");contentBuilder.append("\n    }\n\n");String arg = clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1);contentBuilder.append("    public void add(" + clazz.getSimpleName() + " " + arg + "){\n");contentBuilder.append("        " + daoName + ".add(" + arg + ");");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public void delete(String id){\n");contentBuilder.append("       "+daoName +".delete(id);");contentBuilder.append("\n    }\n\n");contentBuilder.append("    public void update(" + clazz.getSimpleName() + " " + arg + "){\n");contentBuilder.append("        "+daoName+".update(" + arg + ");");contentBuilder.append("\n    }\n");contentBuilder.append("}");println(daoJavaFile, contentBuilder.toString());}/*** 生成controller代码* @param clazz* */public static void generateController(Class<?> clazz) throws IOException{String path = path(clazz);String controllerDirectoryName = path.substring(0, path.lastIndexOf("\\")) + File.separator + "controller";File controllerDirectory = new File(controllerDirectoryName);if(!controllerDirectory.exists()){controllerDirectory.mkdir();}//generate add controllerString controllerJavaFileName = controllerDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "AddController.java";File controllerJavaFile = new File(controllerJavaFileName);StringBuilder contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".controller;");contentBuilder.append("\n\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service;\n");contentBuilder.append("import javax.servlet.http.HttpServletRequest;\n");contentBuilder.append("import javax.servlet.http.HttpServletResponse;\n");contentBuilder.append("import org.springframework.stereotype.Controller;");contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired;\n");contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping;\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("@Controller\n");contentBuilder.append("public class "+ clazz.getSimpleName() + "AddController"+"{\n\n");String serviceName = clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Service";contentBuilder.append("    @Autowired\n");contentBuilder.append("    private I" + clazz.getSimpleName() + "Service " + serviceName + ";\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/add.do\")\n");contentBuilder.append("    public String add(HttpServletRequest req){\n");contentBuilder.append("        return \"" + clazz.getSimpleName().toLowerCase() + "/add\";\n");contentBuilder.append("    }\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/addSubmit.do\")\n");contentBuilder.append("    public void addSubmit(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + ", HttpServletRequest req, HttpServletResponse resp){\n");contentBuilder.append("    }\n");contentBuilder.append("\n}");println(controllerJavaFile, contentBuilder.toString());//clear content builder;contentBuilder = new StringBuilder();//generate delete controllercontrollerJavaFileName = controllerDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "DeleteController.java";controllerJavaFile = new File(controllerJavaFileName);contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".controller;");contentBuilder.append("\n\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service;\n");contentBuilder.append("import javax.servlet.http.HttpServletRequest;\n");contentBuilder.append("import javax.servlet.http.HttpServletResponse;\n");contentBuilder.append("import org.springframework.stereotype.Controller;");contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired;\n");contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping;\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("@Controller\n");contentBuilder.append("public class "+ clazz.getSimpleName() + "DeleteController"+"{\n\n");contentBuilder.append("    @Autowired\n");contentBuilder.append("    private I" + clazz.getSimpleName() + "Service " + serviceName + ";\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/delete.do\")\n");contentBuilder.append("    public void delete(HttpServletResponse resp){\n");contentBuilder.append("    }\n\n");contentBuilder.append("\n}");println(controllerJavaFile, contentBuilder.toString());//clear content builder;contentBuilder = new StringBuilder();//generate update controllercontrollerJavaFileName = controllerDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "UpdateController.java";controllerJavaFile = new File(controllerJavaFileName);contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".controller;");contentBuilder.append("\n\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service;\n");contentBuilder.append("import javax.servlet.http.HttpServletRequest;\n");contentBuilder.append("import javax.servlet.http.HttpServletResponse;\n");contentBuilder.append("import org.springframework.stereotype.Controller;");contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired;\n");contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping;\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("@Controller\n");contentBuilder.append("public class "+ clazz.getSimpleName() + "UpdateController"+"{\n\n");contentBuilder.append("    @Autowired\n");contentBuilder.append("    private I" + clazz.getSimpleName() + "Service " + serviceName + ";\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/update.do\")\n");contentBuilder.append("    public String update(HttpServletRequest req){\n");contentBuilder.append("        return \"" + clazz.getSimpleName().toLowerCase() + "/update\";\n");contentBuilder.append("    }\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/updateSubmit.do\")\n");contentBuilder.append("    public void updateSubmit(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + ", HttpServletRequest req, HttpServletResponse resp){\n");contentBuilder.append("    }\n");contentBuilder.append("\n}");println(controllerJavaFile, contentBuilder.toString());//clear content builder;contentBuilder = new StringBuilder();//generate list controllercontrollerJavaFileName = controllerDirectory.getCanonicalPath() + File.separator + clazz.getSimpleName() + "ListController.java";controllerJavaFile = new File(controllerJavaFileName);contentBuilder = new StringBuilder();contentBuilder.append("package net.itaem." + clazz.getSimpleName().toLowerCase() + ".controller;");contentBuilder.append("\n\n");contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + ";\n");contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service;\n");contentBuilder.append("import javax.servlet.http.HttpServletRequest;\n");contentBuilder.append("import javax.servlet.http.HttpServletResponse;\n");contentBuilder.append("import org.springframework.stereotype.Controller;");contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired;\n");contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping;\n");contentBuilder.append("\n\n");contentBuilder.append("");contentBuilder.append("@Controller\n");contentBuilder.append("public class "+ clazz.getSimpleName() + "ListController"+"{\n\n");contentBuilder.append("    @Autowired\n");contentBuilder.append("    private I" + clazz.getSimpleName() + "Service " + serviceName + ";\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/list.do\")\n");contentBuilder.append("    public String list(HttpServletRequest req){\n");contentBuilder.append("        return \"" + clazz.getSimpleName().toLowerCase() + "/list\";\n");contentBuilder.append("    }\n\n");contentBuilder.append("    @RequestMapping(\"/" + clazz.getSimpleName().toLowerCase() + "/listJson.do\")\n");contentBuilder.append("    public void listJson(HttpServletResponse resp){\n");contentBuilder.append("    }\n\n");contentBuilder.append("\n}");println(controllerJavaFile, contentBuilder.toString());}/*** 生成jsp界面,这里面一共有三个jsp,分别是add.jsp, update.jsp, list.jsp* */public static void generateJsp(Class<?> clazz) throws IOException{File directory = new File("");// 参数为空String courseFile = directory.getCanonicalPath();String jspRoot = courseFile + File.separator + "WebContent" + File.separator + "WEB-INF" + File.separator + "jsp";String newJspPath = jspRoot + File.separator + clazz.getSimpleName().toLowerCase();File newJspDirectory = new File(newJspPath);if(!newJspDirectory.exists()){newJspDirectory.mkdir();}String patternPath = jspRoot + File.separator + "pattern";//将pattern下面的模板jsp文件复制到这个新建立的文件夹中copyJsp(patternPath, newJspPath);}/*** copy置顶文件夹下面的文件夹到新文件夹中* @param src* @param dest* */private static void copyJsp(String src, String dest){File srcFile = new File(src);if(srcFile.exists()){File[] files = srcFile.listFiles();for(File from: files){try {   String to = dest + File.separator + from.getName();File toFile = new File(to);//如果该文件存在,不要进行复制if(toFile.exists()){continue;}InputStream in = new FileInputStream(from);   OutputStream out = new FileOutputStream(to);   byte[] buff = new byte[1024];   int len = 0;   while ((len = in.read(buff)) != -1) {   out.write(buff, 0, len);   }   in.close();   out.close();   } catch (FileNotFoundException e) {   e.printStackTrace();   } catch (IOException e) {   e.printStackTrace();   }   }}}/*** 获取该类的文件夹所在位置* @param clazz * @return 获取该类的文件夹所在位置 * */public static String path(Class<?> clazz) throws IOException{File directory = new File("");// 参数为空String courseFile = directory.getCanonicalPath();		String packageName = clazz.getPackage().getName();String newPackageName = courseFile + File.separator + "src" + File.separator + packageName.replace(".", File.separator);return newPackageName;	}public static void println(File file, String content){PrintWriter writer = null;try {writer = new PrintWriter(file);writer.write(content);} catch (FileNotFoundException e) {e.printStackTrace();}finally{writer.close();}}
}</span>

        
        下面我们观察下生成代码的样式。这里面给出一个实体Department,生成了如下图所示的代码以及jsp文件。

        下面是生成后的代码样式,这里面生成的代码木有注释,如果大家觉得有必要,可以自己添加相关注释。
package net.itaem.department.controller;import net.itaem.department.entity.Department;
import net.itaem.department.service.IDepartmentService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class DepartmentAddController{@Autowiredprivate IDepartmentService departmentService;@RequestMapping("/department/add.do")public String add(HttpServletRequest req){return "department/add";}@RequestMapping("/department/addSubmit.do")public void addSubmit(Department department, HttpServletRequest req, HttpServletResponse resp){}}
package net.itaem.department.service;import java.util.*;
import net.itaem.department.entity.Department;public interface IDepartmentService{public List<Department> listAll();public Department listBy(String id);public void add(Department Department);public void delete(String id);public void update(Department Department);
}

package net.itaem.department.dao;import java.util.*;
import net.itaem.department.entity.Department;public interface IDepartmentDao{public List<Department> listAll();public Department listBy(String id);public void add(Department Department);public void delete(String id);public void update(Department Department);
}
package net.itaem.department.entity;import java.util.*;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Results;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Update;@Repository(value = "departmentMapper")
public interface DepartmentMapper{@Select(value = "请替换成您需要的sql")@Results(value = {})public List<Department> listAll();@Select(value = "请替换成您需要的sql")@Results(value = {})public Department listBy(String id);@Insert("")public void add(Department Department);@Update("")public void delete(String id);@Update("")public void update(Department Department);
}

总结:开发一个代码生成器的难度并不大,关键在于工程的组织能够方便代码生成器生成代码。



这篇关于代码生成器,极大简化你的工作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992134

相关文章

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据