自定义一键创建controller,service,serviceImpl,mapper

2024-01-11 06:08

本文主要是介绍自定义一键创建controller,service,serviceImpl,mapper,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//在开发过程中比如创建controller(控制层)我们避免不了的重复创建接口捕获异常为接口注释,这些虽然在编译器可以生成,但是总是不那么自由,尤其不符合个人习惯,因此我自己定义了一套,可以指定地址,指定名称,可以创建单个,也可以一次都创建,完全是为了自己的开发需要:

这个要额外的一个jar包mysql-connector-java-5.1.34.jar,因为在创建pojo类时,我是直接通过访问数据的dll文件读出表的数据结构的。

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.sql.*;/*** Created by ChaoZhang on 2019-03-14 10:55*/public class create {/*** @type* all* domain* service* serviceImpl* ctrl* mapper* mapper.xml*/public static String type = "all";   //创建类型public static final String path = "E:\\CreateDomainServiceMapper\\src\\";   //创建路径及内容public static final String fileName = "SpaceAvShare";  //创建的文件的名字public static final String owner = "ChaoZhang";     //注释作者public static final Date date = new Date();     //创建时间static class classBuffer{public File file;public StringBuffer buffer;classBuffer(File file, StringBuffer buffer){this.file = file;this.buffer = buffer;}}/*** 自定义创建作者和注释加入到缓冲并返回* example* created by ChaoZhang onThu Mar 14 14:05:05 CST 2019*/public static StringBuffer writeOwner(){StringBuffer buffer = new StringBuffer();buffer.append("/**\r\n");buffer.append(" *created by " + owner + " on " + date + "\r\n");buffer.append(" */\r\n");buffer.append("\r\n");return buffer;}/*** 自定义创建class或者interface加入到缓冲并返回* @return* @throws Exception*/public static StringBuffer writeClassOrInterface(StringBuffer buffer) throws Exception{if(type.equals(new String("domain"))){buffer.append("public class " + fileName + " {" + "\r\n");JdbcConnection jdbcConnection = new JdbcConnection();System.out.println("*** writeClassOrInterface " + JdbcConnection.result.toString());buffer.append(JdbcConnection.result.toString());}else if(type.equals(new String("service"))){buffer.append("public interface " + fileName + "Service" + " {");}else if(type.equals(new String("ctrl"))){buffer.append("@Controller\r\n");buffer.append("@RequestMapping(value = \"\")\n");buffer.append("public class " + fileName + "Ctrl" + " {");buffer.append("\r\n\r\n");buffer.append("/*JSONObject jsonObject = new JSONObject();\n" +"    Integer state = Integer.valueOf(1000);\n" +"        try{\n" +"\n" +"    }catch (Exception e){\n" +"        e.printStackTrace();\n" +"        jsonObject.put(\"msg\", \"sql报错\");\n" +"        jsonObject.put(\"erro\", e.getCause());\n" +"        state = Integer.valueOf(2000);\n" +"    }\n" +"        jsonObject.put(\"state\", state);\n" +"        return jsonObject;*/");}else if(type.equals(new String("serviceImpl"))){buffer.append("@Service\r\n");buffer.append("public class " + fileName + "ServiceImpl " + "implements " + fileName + "Service" + " {");}else if(type.equals(new String("mapper"))){buffer.append("public interface " + fileName + "Mapper" + " {");}if(type.equals(new String("xml"))){buffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");buffer.append("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\r\n");buffer.append("<mapper namespace=\"com.vv.space.mapper.DeviceUserMapper\" >\r\n");buffer.append("\r\n\r\n");buffer.append("</mapper>\r\n");return buffer;}buffer.append("\r\n");buffer.append("\r\n");buffer.append("}");return buffer;}/*** 创建pojo类* domain文件夹*/public static classBuffer createDomain(){File file = new File(path + fileName + ".java");//写文件注释和创建者StringBuffer buffer = writeOwner();classBuffer classBuffer = new classBuffer(file, buffer);return classBuffer;}/*** 创建业务service* service文件夹*/public static classBuffer createService(){File file = new File(path + fileName + "Service" +".java");//写文件注释和创建者StringBuffer buffer = writeOwner();classBuffer classBuffer = new classBuffer(file, buffer);return classBuffer;}/*** 创建Dao层服务* mapper文件夹*/public static classBuffer createMapper(){File file = new File(path + fileName + "Mapper" + ".java");//写文件注释和创建者StringBuffer buffer = writeOwner();classBuffer classBuffer = new classBuffer(file, buffer);return classBuffer;}/*** 创建业务实现类* impl文件夹*/public static classBuffer createserviceImpl(){File file = new File(path + fileName + "ServiceImpl" + ".java");//写文件注释和创建者StringBuffer buffer = writeOwner();classBuffer classBuffer = new classBuffer(file, buffer);return classBuffer;}/*** 创建控制层实现类* controller文件夹*/public static classBuffer createCtrl(){File file = new File(path + fileName + "Ctrl" + ".java");//写文件注释和创建者StringBuffer buffer = writeOwner();classBuffer classBuffer = new classBuffer(file, buffer);return classBuffer;}/*** 创建.xml文件* @throws Exception*/public static classBuffer createXml(){File file = new File(path + fileName + "Mapper" + ".xml");//写文件注释和创建者StringBuffer buffer = writeOwner();classBuffer classBuffer = new classBuffer(file, buffer);return classBuffer;}public static void create() throws Exception{classBuffer classBuffer = null;switch (type){case "domain":classBuffer = createDomain();break;case "service":classBuffer = createService();break;case "serviceImpl":classBuffer = createserviceImpl();break;case "ctrl":classBuffer = createCtrl();break;case "mapper":classBuffer = createMapper();break;case "xml":classBuffer = createXml();break;default:System.out.println("未知类型");}if(classBuffer.file.exists()){System.out.println("*** 该" + type + "文件已经存在 ***");return ;}else{classBuffer.file.createNewFile();   //创建文件//创建class or interfaceStringBuffer buffer1 = writeClassOrInterface(classBuffer.buffer);FileOutputStream fs = new FileOutputStream(classBuffer.file);   //创建输出流输出到文件PrintWriter pw = new PrintWriter(fs);   //创建打印对象将字符写入输出流pw.write(buffer1.toString());    //将字符写入输出流pw.flush();     //强制将缓冲全部输出到指定文件pw.close();}}//定义一个连接类static class JdbcConnection{//创建一个用于连接的对象Connection ct = null;//创建一个用于发送sql语句的对象PreparedStatement ps = null;//创建一个用于接收结果集的对象ResultSet rs = null;//属性public static StringBuffer result = new StringBuffer("");//默认构造函数public JdbcConnection(){try {//加载驱动Class.forName("org.gjt.mm.mysql.Driver");//得到连接ct = DriverManager.getConnection("jdbc:mysql://114.112.92.135:3307/space?zeroDateTimeBehavior=convertToNull&amp;useUnicode=true&amp;characterEncoding=utf8","songod", "6Kx2n9usEP96K" );//查询String str = "SELECT COLUMN_NAME name , COLUMN_TYPE type, COLUMN_COMMENT comment FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'space' AND TABLE_NAME = 'space_av';";ps = ct.prepareStatement(str);//得到结果rs = ps.executeQuery();String s = null;while(rs.next()){s = "private " + rs.getString(2) + " " + rs.getString(1) + ";" + "   //" + rs.getString(3);System.out.println("private " + rs.getString(2) + " " + rs.getString(1) + ";" + "   //" + rs.getString(3));this.result.append("\r\n");this.result.append("\r\n");this.result.append("    ");this.result.append(s);this.result.append("\r\n");}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{try {//关闭资源if(rs != null){rs.close();}if(ps != null){ps.close();}if(ct != null){ct.close();}} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}}}}public static void main(String[] args) throws Exception{/*** 创建*/System.out.println("*** 开始创建 ***");List<String> list = new ArrayList<String>();if(type.equals("all")){list.add("domain");list.add("service");list.add("ctrl");list.add("mapper");list.add("serviceImpl");list.add("xml");}else{create();}for(String s:list){type = s;create();}System.out.println("*** 创建完成 ***");}}

比如我要创建的叫SpaceAvShare那么如下图:

从pojo类,ctrl,mapper,service都创建好了,这里要提一下创建pojo类需要连接数据库的连接,我将数据库的某个表的dll文件读出创建pojo类

很简单,完全符合我自己的习惯

 

这篇关于自定义一键创建controller,service,serviceImpl,mapper的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593390

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06