【MybatisPlus】高级版可视化、可配置 自动生成代码
今天看别人使用了一个更加智能的生成代码工具,可视化、可配置策略,非常方便,配置一次,在哪都可以使用,也不会跟项目藕合下面简单说一下使用方式。
1、介绍mybatis-plus-generator-ui
主要是封装了mybatis-plus-generator,而且有UI,全部界面化,很方便,也可以自定义模板等等。支持POSTGRE_SQL、ORACLE、DB2、MySQL、SQLSERVER等常见的关系型数据库。
2、使用方式
1、初始化
先自己新建一个maven项目

pom引入工具:
<dependencies><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.27</version></dependency><dependency><groupId>com.github.davidfantasy</groupId><artifactId>mybatis-plus-generator-ui</artifactId><version>1.4.5</version></dependency></dependencies>
新建启动类:它支持将GeberatorUIServer独立部署为一个单独的spring boot项目。
package com.springboot.test;import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;/*** @author fei.chen* @projectName mybatis-generator-ui* @date 2023/5/4下午 4:58*/
public class GeneratorMain {public static void main(String[] args) {GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://111.111.111.111:15432/tables").userName("postgres").password("1111111").driverClassName("org.postgresql.Driver")// 数据库schema,POSTGRE_SQL,ORACLE,DB2类型的数据库需要指定.schemaName("public")// 如果需要修改各类生成文件的默认命名规则,可自定义一个NameConverter实例,覆盖相应的名称转换方法:.nameConverter(new NameConverter() {/*** 自定义Service类文件的名称规则*/public String serviceNameConvert(String tableName) {return this.entityNameConvert(tableName) + "Service";}/*** 自定义Controller类文件的名称规则*/public String controllerNameConvert(String tableName) {return this.entityNameConvert(tableName) + "Controller";}}).basePackage("com.springboot.test").port(8068).build();MybatisPlusToolsApplication.run(config);}
}
2、启动
直接执行main方法即可,在main中指定了程序的运行端口为8086,这种运行方式跟SpringBoot非常相似。
请求url: http://localhost:8068/
数据表都展示出来了。

3、生成所需代码


ok查看项目刷新一下,全部生成:

4、xml 可以自己配置
比如我想在xml增加一个自己的查询语句,直接生成出来


需要的都生成出来了,也是很方便的

3、可配置
1、代码配置
在启动类上可以配置后缀

Service、Controller、Entity、FieldName都可以实现自定义的扩展,自己可以实现。
可查看NameConverter类:
package com.github.davidfantasy.mybatisplus.generatorui.mbp;import cn.hutool.core.util.StrUtil;
import com.github.davidfantasy.mybatisplus.generatorui.dto.Constant;
import com.google.common.base.Strings;import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_JAVA;
import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_XML;/*** 自定义各类名称转换的规则*/
public interface NameConverter {/*** 自定义Entity.java的类名称** @param tableName 表名称* @return*/default String entityNameConvert(String tableName) {if (Strings.isNullOrEmpty(tableName)) {return "";}tableName = tableName.substring(tableName.indexOf(StrUtil.UNDERLINE) + 1, tableName.length());return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));}/*** 自定义表字段名到实体类属性名的转换规则** @param fieldName 表字段名称* @return*/default String propertyNameConvert(String fieldName) {if (Strings.isNullOrEmpty(fieldName)) {return "";}if (fieldName.contains("_")) {return StrUtil.toCamelCase(fieldName.toLowerCase());}return fieldName;}/*** 自定义Mapper.java的类名称*/default String mapperNameConvert(String tableName) {return entityNameConvert(tableName) + "Mapper";}/*** 自定义Mapper.xml的文件名称*/default String mapperXmlNameConvert(String tableName) {return entityNameConvert(tableName) + "Mapper";}/*** 自定义Service.java的类名称*/default String serviceNameConvert(String tableName) {return "I" + entityNameConvert(tableName) + "Service";}/*** 自定义ServiceImpl.java的类名称*/default String serviceImplNameConvert(String tableName) {return entityNameConvert(tableName) + "ServiceImpl";}/*** 自定义Controller.java的类名称*/default String controllerNameConvert(String tableName) {return entityNameConvert(tableName) + "Controller";}/*** 自定义其它生成文件的文件名(不包括entity,mapper.java,mapper.xml,service,serviceImpl,controller这6种)** @param fileType 在页面上输入的输出文件标识* @param tableName 关联的数据表名称名称* @return 生成文件的名称,带后缀*/default String outputFileNameConvert(String fileType, String tableName) {if (fileType.equals(Constant.FILE_TYPE_ENTITY)) {return this.entityNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_MAPPER)) {return this.mapperNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_MAPPER_XML)) {return this.mapperXmlNameConvert(tableName) + DOT_XML;} else if (fileType.equals(Constant.FILE_TYPE_SERVICE)) {return this.serviceNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_SERVICEIMPL)) {return this.serviceImplNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_CONTROLLER)) {return this.controllerNameConvert(tableName) + DOT_JAVA;}return this.entityNameConvert(tableName) + fileType;}}
2、针对源代码更改模板
需要定制UI的话,将代码clone下来后,进入到frontend目录下,进行相应的扩展开发。

修改完成后,需要另行编译src\frontend中的静态资源(源码中不包含已编译的页面),在src\frontend文件夹中执行:
yarn install
yarn run build
4、源码地址
剩下的自己研究吧~
- https://github.com/davidfantasy/mybatis-plus-generator-ui
相关文章:
【MybatisPlus】高级版可视化、可配置 自动生成代码
今天看别人使用了一个更加智能的生成代码工具,可视化、可配置策略,非常方便,配置一次,在哪都可以使用,也不会跟项目藕合下面简单说一下使用方式。 1、介绍mybatis-plus-generator-ui 主要是封装了mybatis-plus-gener…...
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现 提示:最近开始在【图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现前言f-BRS模型运行环境安装1.下载源码并…...
2023/5/4总结
刷题: 第二周任务 - Virtual Judge (vjudge.net) 这一题用到了素筛,然后穷举即可 #include<stdio.h> #define Maxsize 500000 int a[Maxsize]; long long b[Maxsize]; long long max0; int sushu() {a[0]a[1]0;int i,j,k;for(i2,k0;i<Maxsize;i){if(a[i…...
electron+vue3全家桶+vite项目搭建【17】pinia状态持久化
文章目录 引入问题演示实现效果展示、实现步骤1.封装状态初始化函数2.封装状态更新同步函数3.完整代码 引入 上一篇文章我们已经实现了electron多窗口中,pinia的状态同步,但你会发现,如果我们在一个窗口里面修改了状态,然后再打开…...
java基础入门-05-【面向对象进阶(static继承)】
Java基础入门-05-【面向对象进阶(static&继承)】 13、面向对象进阶(static&继承)1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的…...
day12 IP协议与ethernet协议
目录 IP包头 IP网的意义 IP数据报的格式 IP数据报分片 以太网包头(链路层协议) IP包头 IP网的意义 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互联的各具体的网络异构细节; 如果在这种覆盖…...
蓝牙耳机哪款性价比高?2023蓝牙耳机性价比排行
随着蓝牙耳机的使用愈发频繁,蓝牙耳机产品也越来越多,蓝牙耳机的功能、价格、外观设计等都不尽相同。接下来,我来给大家推荐几款性价比高的蓝牙耳机,感兴趣的朋友一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:…...
关于C语言的一些笔记
文章目录 May4,2023常量问题基本数据类型补码printf的字符格式控制关于异或、异或的理解赋值运算i和i的区别关系运算符 May5,2023逻辑运算中‘非’的理解逗号运算运算符的优先级问题三目运算 摘自加工于C技能树 May4,2023 常量问题 //定义常量 const float PI; PI…...
【Python入门知识】NumPy数组迭代及连接
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 数组迭代 迭代意味着逐一遍历元素,当我们在 numpy 中处理多维数组时, 可以使用 python 的基本 for 循环来完成此操作。 如果我们对 1-D 数组进行迭代,它将逐一遍历每个元素。 实例 迭…...
我们公司的面试,有点不一样!
我们公司的面试,有点不一样! 朋友们周末愉快,我是鱼皮。因为我很屑,所以大家也可以叫我屑老板。 自从我发了自己创业的文章和视频后,收到了很多小伙伴们的祝福,真心非常感谢! 不得不说&#…...
C++之初识STL—vector
文章目录 STL基本概念使用STL的好处容器vector1.vector容器简介2.vector对象的默认构造函数3.vector对象的带参构造函数4.vector的赋值5.vector的大小6.vector容器的访问方式7.vector的插入 STL基本概念 STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(con…...
资讯汇总230503
230503 12:21 【放松身心亲近自然 自驾露营成旅游新风尚】今年“五一”假期,我国旅游业的快速恢复催生自驾露营休闲游、短途游、夜游等新型旅游产品提质升级。快速发展的新兴旅游业态,在促进旅游消费、培育绿色健康生活方式等方面发挥了积极作用…...
C++之编程规范
目录 谷歌C风格指南:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ 编码规则: • 开闭原则:软件对扩展是开放的,对修改是关闭的 • 防御式编程:简单的说就是程序不能崩溃 •…...
ChatGPT做PPT方案,10组提示词方案!
今天我们要搞定的PPT内容是: 活动类型:节日活动、会员活动、新品活动分析类型:用户分析、新品立项、项目汇报内容类型:内容规划、品牌策划 用到的工具: mindshow 邀请码 6509097ChatGPT传送门(免费使用…...
分布式夺命12连问
分布式理论 1. 说说CAP原则? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这3个基本…...
sourceTree离线环境部署
目录 1、下载sourceTree安装包,打开之后弹出注册界面(需要去国外网站注册)2、使用技术手段跳过注册步骤3、打开安装包进行安装 注:建议提前安装好git 1、下载sourceTree安装包,打开之后弹出注册界面(需要去…...
6.1.1 图:基本概念
一,基本概念 1.基本定义 (1)图的定义 顶点集不可以是空集,但边集可以是空集。 (2) 有向图的表示: 圆括号 无向图的表示: 尖括号 简单图、多重图: 简单图:…...
SlickEdit for Windows and Linux crack
SlickEdit for Windows and Linux crack 现在可以在“新建注释”对话框中对颜色进行排序,使调色板中的颜色阵列看起来更符合逻辑。 在拆分或扩展行注释时添加了撤消步骤,这样您只需点击“撤消”一次即可撤消行注释扩展。 已更新VHDL颜色编码,…...
ChatGPT实现stackoverflow 解释
stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…...
第五章 作业(123)【编译原理】
第五章 作业【编译原理】 前言推荐第五章 作业123 随堂练习课前热身04-17随堂练习04-17课前热身04-24 最后 前言 2023-5-3 22:12:46 以下内容源自《【编译原理】》 仅供学习交流使用 推荐 第四章 作业(123)【编译原理】 第五章 作业 1 1.令文法G为…...
PyTorch 2.8镜像多场景落地:在线教育平台个性化习题生成引擎部署
PyTorch 2.8镜像多场景落地:在线教育平台个性化习题生成引擎部署 1. 教育行业的AI转型机遇 在线教育行业正面临个性化学习的迫切需求。传统题库系统存在内容同质化、更新成本高、难以匹配学生个体差异等问题。基于PyTorch 2.8构建的个性化习题生成引擎,…...
3步轻松读取Outlook邮件:免费跨平台MSG查看工具让你告别格式困扰
3步轻松读取Outlook邮件:免费跨平台MSG查看工具让你告别格式困扰 【免费下载链接】MsgViewer MsgViewer is email-viewer utility for .msg e-mail messages, implemented in pure Java. MsgViewer works on Windows/Linux/Mac Platforms. Also provides a java api…...
轻量级二维码工具性能优化:从加载到部署的全流程实践
轻量级二维码工具性能优化:从加载到部署的全流程实践 【免费下载链接】qrcodejs Cross-browser QRCode generator for javascript 项目地址: https://gitcode.com/gh_mirrors/qr/qrcodejs 二维码生成功能已成为现代Web应用的常见需求,但传统实现方…...
【极限压测】从99.9%全红到5%安全线!2026最新横评5款硬核降AI工具
说真的,作为在知乎摸爬滚打好几年的博主,我太理解大家临近交稿时的那种绝望了。眼看着论文初稿要交,结果降ai检测一出来,竟然是红彤彤的99%?!那一刻,我感觉脑袋真的“嗡”的一声。好不容易熬夜码…...
保姆级教程:用snntorch在MNIST上训练你的第一个脉冲神经网络(附完整代码)
从零开始:用snntorch构建你的第一个脉冲神经网络手记 第一次接触脉冲神经网络(SNN)时,我被它模拟生物神经元放电的特性深深吸引。与传统人工神经网络不同,SNN通过离散的脉冲信号传递信息,更接近人脑的工作机…...
新手必看!用Simulink搭建ANPC三电平逆变器的SPWM仿真模型(附完整模型文件)
从零构建ANPC三电平逆变器的SPWM仿真模型:Simulink实战指南 在电力电子领域,多电平逆变器因其优异的输出波形质量和较低的开关损耗而备受关注。其中,有源中点箝位型(ANPC)三电平逆变器凭借其独特的拓扑结构和控制灵活性…...
DeepSeek-OCR实战教程:批量处理脚本编写与异步解析任务队列设计
DeepSeek-OCR实战教程:批量处理脚本编写与异步解析任务队列设计 1. 学习目标与场景引入 如果你正在处理大量的文档图片,比如扫描的合同、发票、报告或者历史档案,一张张上传到DeepSeek-OCR界面手动处理,不仅效率低下,…...
Greasy Fork:开源用户脚本平台的价值探索与实践指南
Greasy Fork:开源用户脚本平台的价值探索与实践指南 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 一、价值定位:重新定义浏览器增强体验 1.1 开源平台的核心价值…...
十大经典排序算法解析与实现
## 1. 十大经典排序算法技术解析### 1.1 算法分类体系 排序算法可分为两大技术类别:**比较类排序**: - 通过元素间比较确定相对次序 - 时间复杂度下限为O(nlogn) - 典型代表:快速排序、堆排序、归并排序**非比较类排序**: - 不依赖…...
TurboDiffusion应用场景探索:电商、教育、社交,AI视频如何赋能各行各业
TurboDiffusion应用场景探索:电商、教育、社交,AI视频如何赋能各行各业 1. 引言:AI视频生成的新纪元 想象一下这样的场景:早上9点,电商运营团队需要为100款新产品制作展示视频;下午2点,在线教…...
