idear java方法自动生成 Spring Boot 项目的 Controller、Service、Mapper 和 XML 文件

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();
    }

}

下面这么放:

然后: 

就可以看到 生成的文件了   根据 需要 自己改代码中生成的位置 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值