1.添加依赖:添加到项目的 pom.xml 文件中
<dependencies>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
</dependencies>
正文代码:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* @author : 王英杰
* @desc : 自动生成 Spring Boot 项目的 Controller、Service、Mapper 和 XML 文件
* @date : 2023/5/25 22:41
*/
public class AutoGeneratorFile {
public static void main(String[] args) throws IOException, DocumentException, TransformerException {
String placeInFile = "aiqing"; //要生成的路径下 加的文件夹名
String fuctionName = "wwde"; // 页面功能名称
String packageName = "com.example.belovedwife"; // 包名
String mapperPath = "mapper/" + placeInFile + "/" + fuctionName + "Mapper.xml"; //往 mybatis-config.xml 里写入 mapper 文件的路径
String mybatisConfigPath = "src/main/resources/mybatis-config.xml"; // mybatis-config.xml 文件的路径
generateController(fuctionName, packageName, placeInFile, "src.main.java.com.example.belovedwife"); // 生成 Controller
generateService(fuctionName, packageName, placeInFile, "src.main.java.com.example.belovedwife"); // 生成 Service
generateMapper(fuctionName, packageName, placeInFile, "src.main.java.com.example.belovedwife"); // 生成 Mapper
generateXml(fuctionName, packageName, placeInFile, "src.main.resources"); // 生成 XML
addMapperToMybatisConfig(mapperPath, mybatisConfigPath); //mapper.xml 在 mybatis-config.xml 注册
}
/**
* @desc : 参数 fuctionName 功能名称 packageName 包名 generationPath 要生成的路径
* @author : 王英杰
* @date : 2023/5/25 22:40
*/
public static void generateController(String fuctionName, String packageName, String placeInFile, String generationPath) throws IOException {
String content = "package " + packageName + ".controller" + "." + placeInFile + ";\n\n" +
"import org.springframework.web.bind.annotation.*;\n\n" +
"@RestController\n" +
"@RequestMapping(\"/\")\n" +
"public class " + fuctionName + "Controller {\n\n" +
" @GetMapping(\"/\")\n" +
" public String hello() {\n" +
" return \"Hello, world!\";\n" +
" }\n\n" +
"}\n";
writeFile(fuctionName + "Controller.java", generationPath + ".controller", content, placeInFile);
}
/**
* @desc : 参数 fuctionName 功能名称 packageName 包名 generationPath 要生成的路径
* @author : 王英杰
* @date : 2023/5/25 22:40
*/
public static void generateService(String fuctionName, String packageName, String placeInFile, String generationPath) throws IOException {
String content = "package " + packageName + ".service" + "." + placeInFile + ";\n\n" +
"import org.springframework.stereotype.*;\n\n" +
"@Service\n" +
"public class " + fuctionName + "Service {\n\n" +
"}\n";
writeFile(fuctionName + "Service.java", generationPath + ".service", content, placeInFile);
}
/**
* @desc : 参数 fuctionName 页面名称 packageName 包名 generationPath 要生成的路径
* @author : 王英杰
* @date : 2023/5/25 22:40
*/
public static void generateMapper(String fuctionName, String packageName, String placeInFile, String generationPath) throws IOException {
String content = "package " + packageName + ".mapper" + "." + placeInFile + ";\n\n" +
"import org.springframework.stereotype.Repository;\n\n" +
"@Repository\n" +
"public interface " + fuctionName + "Mapper {\n\n" +
"}\n";
writeFile(fuctionName + "Mapper.java", generationPath + ".mapper", content, placeInFile);
}
/**
* @desc : 参数 fuctionName 项目名称 packageName 包名 generationPath 要生成的路径
* @author : 王英杰
* @date : 2023/5/25 22:40
*/
public static void generateXml(String fuctionName, String packageName, String placeInFile, String generationPath) throws IOException {
String content = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
"<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n" +
"<mapper namespace=\"" + "com.example.belovedwife.mapper." + placeInFile + "." + fuctionName + "Mapper\">\n\n" +
"</mapper>\n";
writeFile(fuctionName + "Mapper.xml", generationPath + ".mapper", content, placeInFile);
}
/**
* @desc : 参数 fuctionName 项目名称 generationPath 要生成的路径 content 文件里自动生成的内容
* @author : 王英杰
* @date : 2023/5/25 22:40
*/
public static void writeFile(String fileName, String generationPath, String content, String placeInFile) throws IOException {
Path directoryPath = Paths.get(generationPath.replace(".", "/") + "/" + placeInFile);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath);
}
Path filePath = Paths.get(generationPath.replace(".", "/") + "/" + placeInFile + "/" + fileName);
Files.write(filePath, content.getBytes());
}
/**
* @desc : 为mapper.xml 在 mybatis-config.xml 注册
* mapperPath 为 mapper 文件的路径
* mybatisConfigPath 为 mybatis-config.xml 文件的路径
* @author : 王英杰
* @date : 2023/5/25 22:53
*/
public static void addMapperToMybatisConfig(String mapperPath, String mybatisConfigPath) throws IOException, DocumentException, TransformerException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(mybatisConfigPath));
Element configuration = document.getRootElement();
Element mappers = configuration.element("mappers");
Element mapper = mappers.addElement("mapper");
mapper.addAttribute("resource", mapperPath);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream(mybatisConfigPath), format);
writer.write(document);
writer.close();
}
}
下面这么放:
然后:
就可以看到 生成的文件了 根据 需要 自己改代码中生成的位置