自制代码生成器(上)

article/2025/9/29 3:17:10

自制代码生成器原因:

Mybatis自带的自动生成代码,不能自定义,各种命名没法改,不能生成controllerservicejsp等页面

如何写代码生成器模板引擎velocity

Velocity-1.7.jar  模板引擎

commons2jar :模板引擎依赖的类

Guava-27.1-jre.jar :实现对字段名的转换,比如good_name字段,在java类的属性叫goodName,当setGoodName时又变成首字母都大写:GoodName,这个jar可以方便转换                                                                                                      80b2c069ada98e6b350c0b85b473ca717c9.jpg     

代码生成器原理:           

1 )编写一个模板,比如要生成 XXXService.java service 里面所有代码讲模块部分全部用占位符 / 变量名代替。比如 MenuService 改成 ${ modelClass }Service
2 )使用模板引擎,向模板中传递需要的占位符数据,比如 ${ modelClass } ,这次要生成 Menu ,就传 Menu ,下次要建G ood ,就传 Good ,就可以生成出来不同的模块,但代码只写了模板里面的这一遍
3 )通过模板引擎,将替换好的占位符的模板输出为具体的 MenuService.java MenuController.java 甚至是 menu . jsp

开发过程:

引入 jar 包。
新建类 com.xx.code.CodeBuilder ,要有 main 方法,需要单独运行生成代码文件。不走 spring 框架;
编写模板引擎调用代码
0b474ed5f0cdd81d2ab058cdb418147fc56.jpg
service.vm 模板
426ab358800c819d64f40766351bd35d9eb.jpg
com.xx.code.CodeBuilder 生成 MenuService 完整 代码
package com.xx.code;import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Properties;import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;public class CodeBuilder {public static void main(String[] args) {//new一下他的模板VelocityEngine ve = new VelocityEngine();//设置模板和输出的代码文件的编码方式Properties p = new Properties();p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");p.setProperty(Velocity.INPUT_ENCODING, "UTF-8");p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");//引擎初始化ve.init(p);//引入一个模板,通过模板路径Template serviceVm = ve.getTemplate("/WebContent/WEB-INF/vm/service.vm");//定义占位符变量,给个值String modelClass = "Menu";String modelName = "menu";//生成的代码放置的目录==项目目录String rootPath = "F:/企业/shop/";//变量放到上下文对象里VelocityContext ctx = new VelocityContext();ctx.put("modelClass", modelClass);ctx.put("modelName", modelName);//将占位符数据和模板合并,输出代码文件CodeBuilder.merge(serviceVm, ctx, rootPath + "src/com/xx/service/" + modelClass + "Service.java");Template serviceVmImpl = ve.getTemplate("/WebContent/WEB-INF/vm/serviceImpl.vm");CodeBuilder.merge(serviceVmImpl, ctx, rootPath + "src/com/xx/service/" + modelClass + "ServiceImpl.java");Template daoVm = ve.getTemplate("/WebContent/WEB-INF/vm/dao.vm");CodeBuilder.merge(daoVm, ctx, rootPath + "src/com/xx/dao/" + modelClass + "Dao.java");}private static void merge(Template template,VelocityContext ctx,String path){PrintWriter writer = null;try {writer = new PrintWriter(path);template.merge(ctx, writer);writer.flush();} catch (FileNotFoundException e) {e.printStackTrace();} finally{writer.close();}}
}

 

其他的模板类似,我们写一下:serviceImpl.vm  service.vm  dao.vm 62c6083bf2f2125788453f427f5f3934aae.jpg

                                     

 

   

转载于:https://my.oschina.net/u/4092798/blog/3042322


http://chatgpt.dhexx.cn/article/gJprRW9P.shtml

相关文章

Mybatis 代码生成器

MBG与Example GitHub - mybatis/generator: A code generator for MyBatis. 我们在项目中使用Mybatis的时候,针对需要操作的一张表,需要创建实体类、Mapper映射器、Mapper接口,里面又有很多的字段和方法的配置,这部分的工作是非常…

Java-代码生成器的实现

文章目录 前言一、概述二、手写代码1. 简要说明2. 代码编写3. 完整代码4. 测试效果 三、项目源码 前言 最近看了一个开源的项目,jfinal-layui,然后这个项目里面有一个 代码生成器 的功能 之前虽然有用过代码生成器,但是从来没有看过相关的源…

MyBatis-Plus代码生成器(新)使用

目录 一,MyBatis-Plus基本简介。 二,特性 三,实现代码自动生成工具 3.1,准备一个初始项目,数据表,连接好数据库 3.2,导入Mybatis-Plus相关依赖 3.3,配置数据库配置文件applicat…

快速上手若依代码生成器(2022)

文章目录 前言一、启动若依框架二、使用代码生成器1 导入示例表2 使用自带的代码生成 生成zip文件2.1 Illegal mix of collations报错解决 三 把zip文件的内容粘贴到对应的模块中3.1 粘贴后台代码3.2 粘贴前台代码3.3 运行菜单sql语句 四 重新启动前端后端总结 前言 快速上手使…

若依代码生成器的使用

一、代码生成器的使用 1.新建maven模块 原则上,我们的业务代码和若依系统本身的系统代码是要做隔离的,一方面是易于之后随着若依系统升级而升级,另一方面则是纯粹的合理性考虑。 这里新建一个ruoyi-business模块作为业务代码模块,…

Java代码生成器

项目说明 本项目基于是基于 renren-generator 定制的代码生成器 文章目录 **项目说明**不同点:效果原理分析如何定制开发?更多可能存在的坑代码地址 不同点: 因为本人的公司使用的是 tkmyabtis swagger 构建 rest api,而 renren-generator…

手把手带你实现一个代码生成器

前言 不知各位看官在工作之中有没有陷入过疯狂CV代码、看着密密麻麻的类不想动手,或者把大把的时间花费在底层的情况。以笔者为例,会经常遇到以下两个问题: 隔一段时间就需要构建一个新应用,需要各种复制粘贴(缺乏定…

代码生成器 ----一个独立的代码生成器

这里我就没有过多发废话了,直接给正文。下面是代码生成器的一些简单介绍。操作简单没啥难度。 下面是生成器的地址,谢谢您的使用↓ 代码生成器点这儿。 一、基于简单的数据库属性连接 二、浏览器缓存连接历史 1、可以选择历史连接 2、可以清空所有浏…

如何自定义代码生成器(上)

1 概述 1.1 介绍 ​ 在项目开发过程中,有很多业务模块的代码是具有一定规律性的,例如controller控制器、service接口、service实现类、mapper接口、model实体类等等,这部分代码可以使用代码生成器生成,我们就可以将更多的时间放…

Java快速开发之代码生成器

1、代码生成器原理分析 观察我们之前写的代码,会发现其中也会有很多重复内容,比如: 那我们就想,如果我想做一个Book模块的开发,是不是只需要将红色部分的内容全部更换成Book即可,如: 所以我们会发现&#…

代码生成器

目录 引言 1 第一种 1.0 pom依赖 1.1 第一步:配置文件 1.2 第二步:代码生成器 1.3 执行生成 引言 代码生成器,遇到过也使用过很多了,用的时候觉得很简单,但是这个玩意不是开个新项目几乎很少碰到,所…

推荐几个代码自动生成器,神器!!!

20个代码生成框架 老的代码生成器的地址:https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html 以下是大家推荐的最近很火爆的代码生成器神器。如果有更好的希望大家多多留言,我会及时补充上去。 -------------------------更新补充------…

代码生成器AutoGenerator

简介:AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。 简介 | MyBatis-Plus 一、如何使用: 1&#x…

代码生成器-mybatis-plus-generator

我们平时在开发的过程中,对于新建的一张表难免会有对其进行增删改查的操作,而且还要写Controller、service、Mapper、Mapper.xml、PO、VO等等。如果每次都要去写这些跟业务毫不相干但是却又耗时耗力的重复代码这不仅是让开发人员不能专注于业务逻辑甚至可…

HM2022ssm-mp5【MP代码生成器】

1. 代码生成器原理分析 1.1 造句: 我们可以往空白内容进行填词造句,比如: 在比如: 再有: 1.2 观察我们之前写的代码,会发现其中也会有很多重复内容,比如: 那我们就想,如果我想做一个Book模块的开发,是不是只…

MyBatis-Plus——代码生成器的使用

MyBatis-Plus——代码生成器的使用 AutoGenerator 是 MyBatis-Plus 的代码生成器&#xff0c;通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码&#xff0c;极大的提升了开发效率。 导入依赖 <dependency><groupI…

推荐几个代码自动生成器,神器

20个代码生成框架 老的代码生成器的地址&#xff1a;https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html 以下是大家推荐的最近很火爆的代码生成器神器。如果有更好的希望大家多多留言&#xff0c;我会及时补充上去。 2.0 WebFirst .NET Core代码生成器 全新的.…

Mybatis-Plus自动生成代码,自定义Controller

MP网址&#xff1a;https://baomidou.com/pages/779a6e/#%E4%BD%BF%E7%94%A8 直接copy官网代码修改成自己的&#xff1a; private void generate() {FastAutoGenerator.create("jdbc:mysql://localhost:3306/test?serverTimezoneGMT%2b8", "root", "…

Oracle数据库的下载与安装教程详解

前言 由于新公司的开发需要用到Oracle数据库&#xff0c;但是自己之前很少接触Oracle&#xff0c;自然也就没有安装Oracle数据库&#xff0c;所以在自己亲自下载安装的时候&#xff0c;就顺便整理成一篇笔记。 一、Oracle的下载 首先&#xff0c;任何软件的下载都推荐自己去官…

【详细】Oracle数据库安装教程--Oracle DataBase 19c

目录 前言/背景1、下载Oracle 19c数据库1. Oracle官网下载2. 网盘下载3. 安装及使用 2、Oracle管理工具 前言/背景 Oracle Database 19c 是最新的长期版本&#xff0c;支持期限最长&#xff1b; 19.3 - 企业版&#xff08;也包括标准版 2&#xff09; 适用于WINDOWS X64位系统。…