项目学习(三)代码生成器

项目学习(一)逆向工程学习-CSDN博客

项目学习(二)公共的代码抽取-CSDN博客

一、代码生成器

在src/test/resources资源包下创建模板文件

1.创建模版

1.1DemoMapper
复制代码
package com.qcby.dao;

import com.qcby.model.Demo;

public interface DemoMapper extends BaseDao<Demo>{

}
1.2DemoService
复制代码
package com.qcby.service;

import com.qcby.model.Demo;

public interface DemoService extends BaseService<Demo>{

}
1.3DemoServiceImpl
bash 复制代码
package com.qcby.service.impl;

import com.qcby.dao.DemoMapper;
import com.qcby.model.Demo;
import com.qcby.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DemoServiceImpl extends BaseServiceImpl<Demo> implements DemoService{
    private DemoMapper demoMapper;

    @Autowired
    public void setDemoMapper(DemoMapper demoMapper) {
        this.demoMapper = demoMapper;
        this.baseDao = demoMapper;
    }
}

2.代码生成器执行类

java 复制代码
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("Album");
    }

    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("ham-core/src/test/resources/tpl/DemoQuery.tpl"));
//        BufferedWriter bw = new BufferedWriter(new FileWriter("ham-core/src/main/java/cn/tx/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("hamcore/src/test/resources/tpl/DemoMapper.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hamcore/src/main/java/com/qcby/dao/" + 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("hamcore/src/test/resources/tpl/DemoService.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hamcore/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("hamcore/src/test/resources/tpl/DemoServiceImpl.tpl"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("hamcore/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();
    }
}

运行后会生成AlbumMapper,AlbumService,AlbumServiceImpl,配合逆向工程生成的Album,AlbumMapper.xml能减轻重复代码工作量

相关推荐
乐观勇敢坚强的老彭1 小时前
C++信息学奥赛lesson1
java·开发语言·c++
San813_LDD1 小时前
[深度学习] 数据序列化格式对比:以日志级别配置为例
xml·java·前端
github_czy1 小时前
更加优雅的类型检查与传参---mcp源码分析
java·服务器·开发语言
专注_每天进步一点点1 小时前
IDEA中,Apifox Helper 的 2.0.15-243版本的插件 导出指定的接口,入参的中文名为空,描述为空
java·ide·intellij-idea
my_daling1 小时前
松下伺服驱动器参数保存流程(已在松下A5上验证)
笔记
兰令水1 小时前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode
小刘|1 小时前
Spring WebFlux + AI 流式输出深度解析:Spring AI 与 LangChain4j 效果差异溯源
java·后端·spring
worilb1 小时前
Spring Cloud 学习与实践(8):Spring Cloud Gateway 统一入口、路由转发与双重跨域故障演练
学习·spring·spring cloud
初圣魔门首席弟子1 小时前
学习工作方法论与任务执行计划
学习