代码生成,大大简化您的工作

代码生成,大大简化您的工作

        在web发展。模块化开发是普遍。在最近的毕业设计,基于自身spring mvc + mybatics + liger ui开发了一个站点,里面也使用模块化来组织代码。于是每个模块的操作,基本上都是大同小异,无非就是增删改查。

以下先观察下代码的包组织结构,以及jsp文件组织结构:例如以下图所看到的。


        从图中能够看出。一个模块通常情况下也会有一个对应的jsp目录。这样子给代码生成器的开发埋下了伏笔。

        继续观察代码组织结构,我们通常在模块以下又使用dao层,service层。controller层,entity层来组织代码。当中dao层用于訪问数据库。service层属于dao层的门面设计模式,通常能够依据业务逻辑须要,调用多个dao层来完毕任务。controller层则是controller类。通常由Add、delete、update、list四个controller类,每一个类仅仅有一个核心功能;entity层则是实体类。在这个project里面,将mybatics的mapper类放在这里。

以下我们来查看下一个模块的代码组织。例如以下图所看到的。


        从图中能够看出,代码命名规则非常的明白。这样子的命名规则,能够非常方便的使用代码生成器来生成这些代码。
        为了开发方便,于是花了点时间。写了个代码生成器。该代码生成器的主要目标就是用户给出实体类,则程序自己主动生成controller、dao、service、mapper、jsp等模板文件。

开发人员仅仅须要依据业务逻辑须要,将sql放入到mapper中,就能高速完毕新模块功能的开发。

        类的开发比較简单,主要就是得到project所在路径,依据给出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(" "); contentBuilder.append("import java.util.*; "); contentBuilder.append("import org.apache.ibatis.annotations.Insert; "); contentBuilder.append("import org.apache.ibatis.annotations.Select; "); contentBuilder.append("import org.apache.ibatis.annotations.Results; "); contentBuilder.append("import org.springframework.stereotype.Repository; "); contentBuilder.append("import org.apache.ibatis.annotations.Update; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("@Repository(value = "" + clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Mapper"" + ") "); contentBuilder.append("public interface " + clazz.getSimpleName() + "Mapper"+"{ "); contentBuilder.append(" @Select(value = "请替换成您须要的sql") "); contentBuilder.append(" @Results(value = {}) "); contentBuilder.append(" public List<"+clazz.getSimpleName()+"> listAll();"); contentBuilder.append(" "); contentBuilder.append(" @Select(value = "请替换成您须要的sql") "); contentBuilder.append(" @Results(value = {}) "); contentBuilder.append(" public "+clazz.getSimpleName()+" listBy(String id);"); contentBuilder.append(" "); contentBuilder.append(" @Insert("") "); contentBuilder.append(" public void add(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");"); contentBuilder.append(" "); contentBuilder.append(" @Update("") "); contentBuilder.append(" public void delete(String id);"); contentBuilder.append(" "); contentBuilder.append(" @Update("") "); contentBuilder.append(" public void update(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");"); contentBuilder.append(" }"); 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(" "); contentBuilder.append("import java.util.*; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("public interface "+"I" + clazz.getSimpleName() + "Dao"+"{ "); contentBuilder.append(" public List<"+clazz.getSimpleName()+"> listAll();"); contentBuilder.append(" "); contentBuilder.append(" public "+clazz.getSimpleName()+" listBy(String id);"); contentBuilder.append(" "); contentBuilder.append(" public void add(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");"); contentBuilder.append(" "); contentBuilder.append(" public void delete(String id);"); contentBuilder.append(" "); contentBuilder.append(" public void update(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");"); contentBuilder.append(" }"); 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(" "); contentBuilder.append("import java.util.*; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".dao.I" + clazz.getSimpleName() + "Dao" + "; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "Mapper" + "; "); contentBuilder.append("import org.springframework.stereotype.Repository; "); contentBuilder.append("import javax.annotation.Resource; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("@Repository "); contentBuilder.append("public class "+ clazz.getSimpleName() + "DaoImpl implements I" + clazz.getSimpleName() + "Dao" +"{ "); String mapperName = clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Mapper"; contentBuilder.append(" @Resource(name = "" + mapperName + "") "); contentBuilder.append(" private " + clazz.getSimpleName() + "Mapper " + mapperName + "; "); contentBuilder.append(" public List<"+clazz.getSimpleName()+"> listAll(){ "); contentBuilder.append(" return " + mapperName+ ".listAll()" + ";"); contentBuilder.append(" } "); contentBuilder.append(" public "+clazz.getSimpleName()+" listBy(String id){ "); contentBuilder.append(" return " + mapperName + ".listBy(id)" + ";"); contentBuilder.append(" } "); contentBuilder.append(" public void add(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + "){ "); contentBuilder.append(" " + mapperName + ".add(" + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + ");" + ""); contentBuilder.append(" } "); contentBuilder.append(" public void delete(String id){ "); contentBuilder.append(" " + mapperName + ".delete(id);"); contentBuilder.append(" } "); contentBuilder.append(" public void update(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + "){ "); contentBuilder.append(" " + mapperName + ".update(" + clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + ");" + ""); contentBuilder.append(" } "); 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(" "); contentBuilder.append("import java.util.*; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("public interface "+"I" + clazz.getSimpleName() + "Service"+"{ "); contentBuilder.append(" public List<"+clazz.getSimpleName()+"> listAll();"); contentBuilder.append(" "); contentBuilder.append(" public "+clazz.getSimpleName()+" listBy(String id);"); contentBuilder.append(" "); contentBuilder.append(" public void add(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");"); contentBuilder.append(" "); contentBuilder.append(" public void delete(String id);"); contentBuilder.append(" "); contentBuilder.append(" public void update(" + clazz.getSimpleName().substring(0,1).toUpperCase() + clazz.getSimpleName().substring(1) + " " + clazz.getSimpleName() + ");"); contentBuilder.append(" }"); 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(" "); contentBuilder.append("import java.util.*; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName()+ "Service" + "; "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".dao.I" + clazz.getSimpleName()+ "Dao" + "; "); contentBuilder.append("import org.springframework.stereotype.Service; "); contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired; "); contentBuilder.append(" "); contentBuilder.append("@Service "); contentBuilder.append("public class "+ clazz.getSimpleName() + "ServiceImpl implements I" + clazz.getSimpleName() + "Service" + "{ "); String daoName = clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1) + "Dao"; contentBuilder.append(" @Autowired "); contentBuilder.append(" private I" + clazz.getSimpleName() + "Dao " + daoName + "; "); contentBuilder.append(" public List<"+clazz.getSimpleName()+"> listAll(){ "); contentBuilder.append(" return " + daoName + ".listAll()" + ";"); contentBuilder.append(" } "); contentBuilder.append(" public "+clazz.getSimpleName()+" listBy(String id){ "); contentBuilder.append(" return " + daoName + ".listBy(id)" + ";"); contentBuilder.append(" } "); String arg = clazz.getSimpleName().substring(0,1).toLowerCase() + clazz.getSimpleName().substring(1); contentBuilder.append(" public void add(" + clazz.getSimpleName() + " " + arg + "){ "); contentBuilder.append(" " + daoName + ".add(" + arg + ");"); contentBuilder.append(" } "); contentBuilder.append(" public void delete(String id){ "); contentBuilder.append(" "+daoName +".delete(id);"); contentBuilder.append(" } "); contentBuilder.append(" public void update(" + clazz.getSimpleName() + " " + arg + "){ "); contentBuilder.append(" "+daoName+".update(" + arg + ");"); contentBuilder.append(" } "); 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 controller String 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(" "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service; "); contentBuilder.append("import javax.servlet.http.HttpServletRequest; "); contentBuilder.append("import javax.servlet.http.HttpServletResponse; "); contentBuilder.append("import org.springframework.stereotype.Controller;"); contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired; "); contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("@Controller "); contentBuilder.append("public class "+ clazz.getSimpleName() + "AddController"+"{ "); String serviceName = clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Service"; contentBuilder.append(" @Autowired "); contentBuilder.append(" private I" + clazz.getSimpleName() + "Service " + serviceName + "; "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/add.do") "); contentBuilder.append(" public String add(HttpServletRequest req){ "); contentBuilder.append(" return "" + clazz.getSimpleName().toLowerCase() + "/add"; "); contentBuilder.append(" } "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/addSubmit.do") "); contentBuilder.append(" public void addSubmit(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + ", HttpServletRequest req, HttpServletResponse resp){ "); contentBuilder.append(" } "); contentBuilder.append(" }"); println(controllerJavaFile, contentBuilder.toString()); //clear content builder; contentBuilder = new StringBuilder(); //generate delete controller controllerJavaFileName = 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(" "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service; "); contentBuilder.append("import javax.servlet.http.HttpServletRequest; "); contentBuilder.append("import javax.servlet.http.HttpServletResponse; "); contentBuilder.append("import org.springframework.stereotype.Controller;"); contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired; "); contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("@Controller "); contentBuilder.append("public class "+ clazz.getSimpleName() + "DeleteController"+"{ "); contentBuilder.append(" @Autowired "); contentBuilder.append(" private I" + clazz.getSimpleName() + "Service " + serviceName + "; "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/delete.do") "); contentBuilder.append(" public void delete(HttpServletResponse resp){ "); contentBuilder.append(" } "); contentBuilder.append(" }"); println(controllerJavaFile, contentBuilder.toString()); //clear content builder; contentBuilder = new StringBuilder(); //generate update controller controllerJavaFileName = 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(" "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service; "); contentBuilder.append("import javax.servlet.http.HttpServletRequest; "); contentBuilder.append("import javax.servlet.http.HttpServletResponse; "); contentBuilder.append("import org.springframework.stereotype.Controller;"); contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired; "); contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("@Controller "); contentBuilder.append("public class "+ clazz.getSimpleName() + "UpdateController"+"{ "); contentBuilder.append(" @Autowired "); contentBuilder.append(" private I" + clazz.getSimpleName() + "Service " + serviceName + "; "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/update.do") "); contentBuilder.append(" public String update(HttpServletRequest req){ "); contentBuilder.append(" return "" + clazz.getSimpleName().toLowerCase() + "/update"; "); contentBuilder.append(" } "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/updateSubmit.do") "); contentBuilder.append(" public void updateSubmit(" + clazz.getSimpleName() + " " + clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + ", HttpServletRequest req, HttpServletResponse resp){ "); contentBuilder.append(" } "); contentBuilder.append(" }"); println(controllerJavaFile, contentBuilder.toString()); //clear content builder; contentBuilder = new StringBuilder(); //generate list controller controllerJavaFileName = 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(" "); contentBuilder.append("import net.itaem." + clazz.getSimpleName().toLowerCase() + ".entity." + clazz.getSimpleName() + "; "); contentBuilder.append("import net.itaem."+ clazz.getSimpleName().toLowerCase() + ".service.I" + clazz.getSimpleName() + "Service; "); contentBuilder.append("import javax.servlet.http.HttpServletRequest; "); contentBuilder.append("import javax.servlet.http.HttpServletResponse; "); contentBuilder.append("import org.springframework.stereotype.Controller;"); contentBuilder.append("import org.springframework.beans.factory.annotation.Autowired; "); contentBuilder.append("import org.springframework.web.bind.annotation.RequestMapping; "); contentBuilder.append(" "); contentBuilder.append(""); contentBuilder.append("@Controller "); contentBuilder.append("public class "+ clazz.getSimpleName() + "ListController"+"{ "); contentBuilder.append(" @Autowired "); contentBuilder.append(" private I" + clazz.getSimpleName() + "Service " + serviceName + "; "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/list.do") "); contentBuilder.append(" public String list(HttpServletRequest req){ "); contentBuilder.append(" return "" + clazz.getSimpleName().toLowerCase() + "/list"; "); contentBuilder.append(" } "); contentBuilder.append(" @RequestMapping("/" + clazz.getSimpleName().toLowerCase() + "/listJson.do") "); contentBuilder.append(" public void listJson(HttpServletResponse resp){ "); contentBuilder.append(" } "); contentBuilder.append(" }"); 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{

    @Autowired
    private 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);
}

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



版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/mfrbuaa/p/4739636.html