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

项目学习(一)逆向工程学习-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能减轻重复代码工作量

相关推荐
guodingdingh1 小时前
软件开发工作问题总结0718
java·开发语言·数据库
世人万千丶3 小时前
鸿蒙Flutter Flex多子组件权重分配
学习·flutter·华为·harmonyos·鸿蒙
咖啡八杯3 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育3 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵3 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔5 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影5 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
圣光SG5 小时前
Servlet学习笔记
笔记·学习·servlet
奋发向前wcx5 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
Miao121316 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言