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

运行即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422326.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac 安装配置oh-my-zsh

1. 安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 按照步骤安装即可 安装完成查看版本 brew -v 2. 安装zsh brew install zsh 查看版本 zsh --version 3. 安装oh-my-zsh github官网链…

反序列化字符串逃逸(上篇)

首先&#xff0c;必须先明白&#xff0c;这个点并不难&#xff0c;我给大家梳理一遍就会明白。 反序列化字符串逃逸就是序列化过程中逃逸出来字符&#xff0c;是不是很简单&#xff0c;哈哈哈&#xff01; 好了&#xff0c;不闹了&#xff0c;其实&#xff1a; 这里你们只要懂…

JavaEE中的监听器的作用和工作原理

在JavaEE&#xff08;Java Platform, Enterprise Edition&#xff09;中&#xff0c;监听器&#xff08;Listener&#xff09;是一种重要的组件&#xff0c;用于监听和响应Web应用程序中的事件。监听器的作用是在特定的事件发生时执行一些自定义的逻辑。常见的监听器包括Servle…

深度学习记录--梯度消失和爆炸

梯度消失和爆炸的产生 当神经网络层数很大时&#xff0c;即很大时&#xff0c;w与1之间的大小关系会产生梯度消失与梯度爆炸的问题 当w<1时&#xff0c;会非常小&#xff0c;梯度消失 当w>1时&#xff0c;会非常大&#xff0c;梯度爆炸 解决方法 权重初始化 层数n越大…

网络安全全栈培训笔记(57-服务攻防-应用协议RsyncSSHRDPFTP漏洞批量扫描口令拆解)

第57天 服务攻防-应用协议&Rsync&SSH&RDP&FTP&漏洞批量扫描&口令拆解 知识点&#xff1a; 1、服务攻防-远程控制&文件传输等 2、远程控制-RDP&RDP&弱口令&漏洞 3、文件传输-FTP&Rsyc&弱口令&漏洞 章节内容&#xff1a;…

1.21 day6 IO网络编程

网络聊天室 服务端 #include <myhead.h> #define PORT 8888 #define IP "192.168.122.48" struct MSG {char tyep;char name[20];char buf[128]; }; typedef struct Node {struct sockaddr_in cin;struct Node*next; }*node;int main(int argc, const char *…

HarmonyOS ArkUI 框架的实现原理和落地实践

HarmonyOS 操作系统特性 首先介绍一下鸿蒙操作系统&#xff0c;鸿蒙操作系统是华为设计的下一代分布式物联网操作系统&#xff0c;它首次引入了面向场景设计的分布式理念&#xff0c;同时能够实现一套操作系统通过裁减的方式适配到某种终端&#xff0c;它是华为面向万物互联理念…

预约小程序制作:最佳实践与案例分析

随着移动互联网的普及&#xff0c;预约小程序已经成为许多服务行业提升客户体验和效率的重要工具。如果你也想制作一个预约小程序&#xff0c;但是不知道如何入手&#xff0c;那么本文将为你提供一份详细的经验指南。 首先&#xff0c;你可以选择使用第三方制作平台来制作预约小…

unity项目《样板间展示》开发:火焰和UI设计

第二章&#xff1a;火焰和UI设计 前言一、火焰模型管理灶台火焰壁炉火焰 二、电视机播放三、UI设计结语 前言 这次带大家从0到1做一个unity项目&#xff1a;《样板间展示》。 顾名思义&#xff0c;项目内容是展示样板间&#xff0c;即玩家可以与房间中的物体、家具进行交互。 至…

PyQt ------ QTextEditor

PyQt ------ QTextEditor 引言正文示例1------进阶示例 引言 这里给大家介绍一下 PyQt6 中的 QTextEditor 组件用法。 正文 示例1------进阶示例 import sys from PyQt6.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout, QPushButtonclass TextEditorDemo…

深度学习笔试题(一)

一、单选题&#xff08;1-20题&#xff09; 1、这些图中的哪一个表示sigmoid激活函数&#xff1f;&#xff08;C&#xff09; A. B. C. D. 2、对于隐藏单元&#xff0c;tanh激活通常比sigmoid激活函数更有效&#xff0c;因为其输出的平均值接近于1&#xff0c;因此它可以更…

电脑文件msvcp140.dll重新安装的解决方法,详细解析msvcp140.dll

电脑文件msvcp140.dll找不到了&#xff0c;你遇到过这种事情么&#xff1f;其实msvcp140.dll文件找不到也是很正常的&#xff0c;毕竟dll文件的丢失时常发生&#xff0c;而msvcp140.dll只是其中一个&#xff0c;下面我们一来看看msvcp140.dll重新安装的解决方法。 一.msvcp140.…