【spring】代码生成器

 

       📝个人主页:五敷有你      

 🔥系列专栏:spring

⛺️稳中求进,晒太阳

代码生成器(本质IO流)

在mybatis的逆向工程生成model和mapper接口和xml文件后,还需要反复的写Service的接口和实现类。很繁琐和降智。所以可以手写代码模板生成。

1、首先在test包下创建模板(如下这个位置)

不懂为什么继承这个的去看我的(抽取代码思想=》链接)

代码也给你们粘贴一份(注意该一些包名啥的)

package com.qcby.service;

import com.qcby.pojo.Demo;

public interface DemoService extends BaseService<Demo>{

}

2、粘贴我的代码生成器执行类

不需要引入依赖因为我这个主要是依靠java中IO流实现的,不需要外部依赖。 

(注意改变路径)

package com.qcby.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

/**
 * 代码生成器执行类
 */
public class SourceGenerator {
    public static void main(String[] args) throws Exception {
        generatorSource("Song");
//        generatorSource("Comment");
//        generatorSource("Mtype");
//        generatorSource("Songer");
//        generatorSource("TxUser");
    }

    public static void generatorSource(String objName) throws Exception{
        generateQuery(objName);
        generateDao(objName);
        generateService(objName);
        generateServiceImpl(objName);
    }


    public static void generateQuery(String objName) throws Exception{
        //EbItem
        //创建文件输入流
        BufferedReader br = new BufferedReader(new FileReader("hami_core/src/test/resources/tpl/DemoQuery.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hami_core/src/main/java/com/qcby/query/"+objName+"Query.java"));
        String line = null;
        while((line = br.readLine()) != null){
            line = line.replace("Demo", objName);
            bw.write(line);
            bw.newLine();

        }
        bw.close();
        br.close();
    }

    public static void generateDao(String objName) throws Exception{
        //EbItem
        //创建文件输入流
        BufferedReader br = new BufferedReader(new FileReader("hami_core\\src\\test\\resources\\tpl\\DemoMapper.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hami_core/src/main/java/com/qcby/mapper/"+objName+"Mapper.java"));
        String line = null;
        while((line = br.readLine()) != null){
            line = line.replace("Demo", objName);
            bw.write(line);
            bw.newLine();

        }
        bw.close();
        br.close();
    }
    public static void generateService(String objName) throws Exception{
        //EbItem
        //创建文件输入流
        BufferedReader br = new BufferedReader(new FileReader("hami_core/src/test/resources/tpl/DemoService.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hami_core/src/main/java/com/qcby/service/"+objName+"Service.java"));
        String line = null;
        while((line = br.readLine()) != null){
            line = line.replace("Demo", objName);
            bw.write(line);
            bw.newLine();

        }
        bw.close();
        br.close();
    }
    public static void generateServiceImpl(String objName) throws Exception{

        //把传递过来的实体类的名字改成小写一份
        String lowerObjName = objName.substring(0, 1).toLowerCase()+objName.substring(1, objName.length());

        //EbItem
        //创建文件输入流
        BufferedReader br = new BufferedReader(new FileReader("hami_core/src/test/resources/tpl/DemoServiceImpl.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hami_core/src/main/java/com/qcby/service/impl/"+objName+"ServiceImpl.java"));
        String line = null;
        while((line = br.readLine()) != null){
            line = line.replace("Demo", objName);
            line = line.replace("demo", lowerObjName);
            bw.write(line);
            bw.newLine();
        }
        bw.close();
        br.close();
    }
}

运行即可。

相关推荐

  1. Spring+Mybatis-plus 实现 Gauss DB数据库代码生成

    2024-01-23 01:50:03       9 阅读
  2. 使用代码生成器生成代码 mybatis-plus-generator

    2024-01-23 01:50:03       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-23 01:50:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-23 01:50:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-23 01:50:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-23 01:50:03       18 阅读

热门阅读

  1. Python安装wxpython

    2024-01-23 01:50:03       25 阅读
  2. 「优选算法刷题」:长度最小的子数组

    2024-01-23 01:50:03       30 阅读
  3. 常用的正则表达式1

    2024-01-23 01:50:03       30 阅读
  4. Webpack5入门到原理17:Loader 原理

    2024-01-23 01:50:03       33 阅读
  5. Go 语言实现快速排序算法的简单示例

    2024-01-23 01:50:03       41 阅读
  6. 限制大语言模型的天花板是什么

    2024-01-23 01:50:03       29 阅读
  7. 【0246】深入分析PG内核Write-Ahead Log的实现机制

    2024-01-23 01:50:03       32 阅读
  8. 力扣208题:实现Tire(前缀树)

    2024-01-23 01:50:03       36 阅读
  9. Leetcode 3011. Find if Array Can Be Sorted

    2024-01-23 01:50:03       29 阅读
  10. docker下安装rabbitmq

    2024-01-23 01:50:03       36 阅读