MyBatis-Plus 可视化代码生成器来啦,让你的开发效率大大提速!!

点击关注公众号,Java干货及时送达22e8085e4414658b4d617639983666fa.png

a5050a95c58b88b4b9ecc0d1917f1817.png 学习 Spring Cloud 微服务的正确姿势!

87740164043873ed80385ab622f50ce3.png 用上 ChatGPT 啦,强的离谱!

95c2b77d8b9a8c2043e4695f85d87440.png 终于把 Spring Boot 3.0 写成书了!


前言

在基于Mybatis的开发模式中,很多开发者还会选择Mybatis-Plus来辅助功能开发,以此提高开发的效率。虽然Mybatis也有代码生成的工具,但Mybatis-Plus由于在Mybatis基础上做了一些调整,因此,常规的生成工具生成的代码还有一些不太符合预期。而且对于多数据库的支持不是很好。

因此,我们需要一款支持高度定制化,带图形UI页面,能适配多数数据库的基础程序生成框架。本文就介绍这款基于Mybatis-Plus的代码自助生成器,github地址:mybatis-plus-generator-ui。

文章通过实例集成的方式来详细讲解mybatis-plus-generator-ui,感兴趣的朋友可以自己clone下来,也可以自己进行扩展自定义。

一、mybatis-plus-generator-ui是什么?

它是对mybatis-plus-generator进行封装,通过Web UI快速生成兼容Spring boot,mybatis-plus框架的各类业务代码。提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity、Mapper、Mapper.xml、Service、Controller等,可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。

29364d63d629a07bec6f99b70ee6c23f.png 0b1f967741d594b73667ba3fdcf38282.png

功能列表:

  • Table查询: 查询配置的关系型数据库表的列表查询。

  • 输出配置: 对需要生成的相关代码,比如Entity、Mapper、Servcie、Controller等代码模板信息进行配置,用于在转换时调用。

  • 项目导入: 可以导入其它项目配置好的信息给本项目使用。

  • 下载模板: 支持本项目配置的模板信息下载后共享。

  • 策略配置: 直接定义各种文件的生成策略。

  • 模板上传: 支持从别的项目中下载模板,同上传供本项目使用。

  • SQL输入上传: 支持将查询语句直接上传或者复制到输入框中。

  • SQL代码生成: 基于SQL脚本生成相应的代码。

二、 mybatis-plus-generator-ui怎么用?

mybatis-plus-generator-ui提供以jar包的形式为外部项目提供服务,通过配置的数据库配置去读取数据库的配置信息,并通过Web UI的方式提供给开发者使用。mybatis-plus-generator-ui支持POSTGRE_SQL、ORACLE、DB2、MySQL、SQLSERVER等常见的关系型数据库。

推荐一个开源免费的 Spring Boot 最全教程:

https://github.com/javastacks/spring-boot-best-practice

1、maven pom引入

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yelang</groupId><artifactId>mybatis-plus-generator-ui-case</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>com.github.davidfantasy</groupId><artifactId>mybatis-plus-generator-ui</artifactId><version>1.4.5</version></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.25</version></dependency></dependencies>
</project>

2、新建程序入口,以main函数的方式运行

mybatis-plus-generator-ui在1.4.0版本之后,可支持将GeberatorUIServer独立部署为一个单独的spring boot项目,通过页面指定目标项目根目录的方式为多个项目提供源码生成服务。这种方式适用于有多个项目库需要独立进行开发的模式。实例关键代码如下:

package com.yelang;import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;public class GeneratorMain {public static void main(String[] args) {GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://127.0.0.1:5432/ghyapp").userName("ghy01").password("ghy01").driverClassName("org.postgresql.Driver")// 数据库schema,POSTGRE_SQL,ORACLE,DB2类型的数据库需要指定// .schemaName("myBusiness")// 如果需要修改各类生成文件的默认命名规则,可自定义一个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) + "Action";}}).basePackage("com.github.davidfantasy.mybatisplustools.example").port(8068).build();MybatisPlusToolsApplication.run(config);}}

在上面的配置中,我们连接的示例数据库是PostgerSQL,需要在Maven中定义相应的驱动程序,并且在上述代码中正确配置相应的类。最后指定了程序的运行端口为8086,这种运行方式跟SpringBoot非常相似。

另外,如果你近期准备面试跳槽,建议在Java面试库小程序在线刷题,涵盖 2000+ 道 Java 面试题,几乎覆盖了所有主流技术面试题。

3、实例运行

运行以上的main方法,在控制台可以看到以下输出即为成功部署。

0c7dcd139a7c05ee9522ef2e2823cd49.png

在输出的日志中,可以看到程序的运行端口,以及默认的模板目录地址。在浏览器中输入访问地址http://localhost:8068/,即可进行配置生成。

三、mybatis-plus-generator-ui代码生成

1、Table的查询和浏览

可以直接浏览和查询配置的数据源的数据表信息,可选择一个或多个生成模板代码。

293e6ac8572456118f622c0a682c4181.png

2、输出配置

内置Entity、Mapper、Service、Controller等6种类型代码的模板配置,可以上传模板进行替换,并修改各类参数,配置参数已经按照影响的文件类型重新进行了分类,并加入了部分文本说明;也可以自行添加其它类型的自定义输出文件。所有的配置项都会按照项目包名进行保存,只需一次性设置就可以了。

96a8593fd7992275b562e56e4ccf8454.png

3、策略配置

将每次生成代码时可能变动的内容加入到代码生成选项中,方便调整每次的生成策略,比如:是否覆盖原文件,生成文件的种类等等:

e94fa3a23a3bb1c6f1c338faff19e410.png

4、SQL配置生成

通过输入查询SQL,可自动在Mapper(Xml及Java)中生成对应的查询方法,DTO对象和ResultMap(结果集映射配置)

946606cee07b7aec737ecbce64ca815f.png

5、代码生成

02211fd53c56819b14976c848ed4432a.png 495acd83f272ec5d5e5c52e771931eef.png

四、自定义扩展

1、相关模板调整

在相关的页面中,可以进行相应的调整,在对应的btl模板中下载对应文件的具体模板,使用文本工具打开,直接修改源代码,文中取一种方式示例,其它方式一样。

82f81700f8d67b0fdbc1cb92a868d6fd.png d9a17de792fe29fb181f360f67e9b6fa.png

2、代码层级的配置

在一些团队中,肯定对Mapper的定义为Dao,Controller层需要定义为Action,通过修改代码模板btl的方式是可以的,还有一种方式是通过调整内部映射的方式来进行修改。主要使用的类是NameConverter。

/**
* 自定义Service类文件的名称规则
*/
public String serviceNameConvert(String tableName) {return this.entityNameConvert(tableName) + "Service";
}/**
* 自定义Controller类文件的名称规则
*/
public String controllerNameConvert(String tableName) {return this.entityNameConvert(tableName) + "Action";
}

除了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;}}

mybatis-plus-generator-ui的功能非常丰富,甚至针对ui都是可以自定义修改的。如果需要定制UI的话,将代码clone下来后,进入到frontend目录下,进行相应的扩展开发。

17122a0ee77a63374f1b40fad90e59d8.png

修改完成后,需要另行编译src\frontend中的静态资源(源码中不包含已编译的页面),在src\frontend文件夹中执行:

yarn install
yarn run build

五、总结

以上就是今天要讲的内容,本文简要介绍一款基于Mybatis-Plus的代码自助生成器,地址:

https://github.com/davidfantasy/mybatis-plus-generator-ui

文章通过实例集成的方式来详细讲解mybatis-plus-generator-ui,从相关概念到实际集成案例,以及具体的扩展开发介绍。如果在工作中有这种需要,不妨采用这种方式。希望本文对您有所帮助,欢迎指导交流。

原文链接:https://blog.csdn.net/yelangkingwuzuhu/article/details/128077533

版权声明:本文为CSDN博主「夜郎king」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。


最后宣传下我的 ChatGPT 知识星球,星球分享了大量 ChatGPT 学习资料, 还输出了 60+ 篇保姆级教程,持续更新中,涉及方方面面,真正的高质量知识星球。

目前还是优惠价,快扫码加入吧:

cfadc267781f9236942729b93b64cb9e.png

End

0cd8fa397429757681848c89a578d14e.png 学习 Spring Cloud 微服务的正确姿势!

b01b81030ac8d433de076eb498968bd7.png 终于把 Spring Boot 3.0 写成书了!

bf20cc9fbbf88ff43ce32e4543be3715.png 用上 ChatGPT 啦,强的离谱!

5b59445f8ec6a59e01318680bc65aee3.png ChatGPT 视频课程来了,完全免费!

c2909866f665bd7ce31241c3584865fb.png Java 20 正式发布,超神了。。

👇 点击阅读原文,玩转 ChatGPT!

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

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

相关文章

农民工与学生为楼癫狂 富人加速撤离

首先是各级政府不约而同开始鼓励农民工进城买房。然后&#xff0c;国家信息中心宏观经济形势课题组的报告&#xff0c;甚至把这件事提高到了生死攸关的高度&#xff1a;农民工市民化&#xff0c;是消化住宅库存的关键环节和成败所在。特别想请教国家信息中心宏观经济形势课题组…

计算机成下一个土木了??

来源&#xff1a;知乎 最近互联网裁员&#xff0c;有网友热议&#xff1a;2022年大规模裁员后&#xff0c;计算机专业会不会成为下一个土木&#xff1f; 前些年抓住了互联网行业的红利期&#xff0c;进入大厂的员工&#xff0c;基本可以实现在一线城市买房扎根。 但反观现在&am…

读书笔记-大颠狂(非同寻常的大众幻想与群众性癫狂)

本书内容概要 《财富》杂志鼎力推荐的75本商务必读书之一&#xff0c;《金融时报》评选的史上最佳10部金融作品之一。本书在金融史上的地位不言自喻&#xff0c;在世界各地流传了近200年依然畅销不衰。它不单是一本金融投资领域的超级经典&#xff0c;也是一部有关人类愚行的编…

让人癫狂的24号,请你慢点离开

那一年&#xff0c;你18岁&#xff0c;初进联盟&#xff0c;受世人怀疑&#xff0c;拿下扣篮冠军  那一年&#xff0c;你19岁&#xff0c;史上ALL STAR首发&#xff0c;惊艳世人  那一年&#xff0c;你20岁&#xff0c;坐稳球队先发&#xff0c;场均19&#xff0c;成为一股…

IntelliJ IDEA 2019,从入门到癫狂,图文教程

点击上方“小哈学Java”&#xff0c;选择“星标” 回复“666”&#xff0c;领取100G独家整理的学习资料哟~ 来源&#xff1a;http://t.cn/Eiv6CTU 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。 其实笔者也是一枚从Eclipse…

IntelliJ IDEA 2019从入门到癫狂 图文教程!

点击上方“方志朋”&#xff0c;选择“设为星标” 回复”666“获取新整理的面试资料 作者&#xff1a;yizhiwazi 来源&#xff1a;www.jianshu.com/p/9c65b7613c30 前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上…

新世纪的群众性幻想与癫狂3

又泡沫的地方&#xff0c;就有财富的地方 自我意淫的人造牛市 进入2015年以来&#xff0c;静默已久的A股股价就出现了一个令人意想不到的暴涨。到2015年6月中旬&#xff0c;上证综指已较2014年7月上涨了152%、较年初上涨了59.7%&#xff0c;中小企业板、创业板较年初更是上涨了…

癫狂的dom——利用css3让dom动起来

不废话&#xff0c;先来看一下效果&#xff1a; 下面上代码&#xff1a; html部分&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><link href"shake.css" …

IntelliJ IDEA 2019从入门到癫狂

前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。 其实笔者也是一枚从Eclipse转IDEA的探索者&#xff0c;随着近期的不断开发实践和调试&#xff0c;逐步体会到这款智能IDE带来的巨大开发便利…

新世纪的群众性幻想与癫狂

历史不会改变&#xff0c;只会一次次的重复 经过了千万年的进化&#xff0c;人类已经站在了食物链的顶端。人类的进化并不是肢体或皮毛上演化所带来的结果&#xff0c;而是人类具有智慧&#xff0c;知道使用大脑去思考判断。但是&#xff0c;人毕竟还是动物&#xff0c;内心所保…

IntelliJ IDEA 2019从入门到癫狂 图文教程

点击上方“朱小厮的博客”&#xff0c;选择“设为星标” 做积极的人&#xff0c;而不是积极废人 来源&#xff1a;http://t.cn/Eiv6CTU 前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。 其实笔…

CXO是什么?医药板块龙头都有哪些?

制药行业是当今最复杂、监管最严格的行业之一。新药的开发&#xff0c;从最初的发现到最终的批准&#xff0c;是一个漫长而昂贵的过程&#xff0c;需要许多不同专业人士的专业知识。而制药公司面临的主要挑战之一是平衡创新需求与成本效率需求&#xff0c;面对这个挑战&#xf…

医疗器械上市公司

内在上交所和深交所上市的公司中&#xff0c;主营业务为医疗器械的一共有35家&#xff0c;在港交所上市的有8家&#xff0c;共计43家。 图片来自“123RF图库” 医疗器械、药品和医疗服务并称为医疗行业的三驾马车。国家政策的支持&#xff0c;市场容量的扩张&#xff0c;无疑…

全网盘点有哪些免费开源提高生产力的 GitHub 项目火了?

全网盘点有哪些免费开源提高生产力的 GitHub 项目火了&#xff1f; 开箱即用的地理信息系统 「地理信息系统&#xff08;Geographic Information System&#xff0c;简称 GIS&#xff09;」是一种用于采集、存储、处理、分析、管理和展示地理信息的计算机系统。 简单来说&…

科普:生成式 AI 简介

What I cannot create, I do not understand. - Richard Feynman 前言 你左拥右抱着 Stable Diffusion 和 MidJourney 创造美轮美奂的图片。 你熟练使用着 ChatGPT 和 LLaMa 创造辞致雅赡的文字。 你来回切换着 MuseNet 和 MuseGAN 创造高山流水的音乐。 毋庸置疑&#xff0c;人…

生成式 AI 简介

What I cannot create, I do not understand. - Richard Feynman 前言 你左拥右抱着 Stable Diffusion 和 MidJourney 创造美轮美奂的图片。 你熟练使用着 ChatGPT 和 LLaMa 创造辞致雅赡的文字。 你来回切换着 MuseNet 和 MuseGAN 创造高山流水的音乐。 毋庸置疑&#xff0c;人…

如何编写AI艺术提示[示例+模板]

有没有觉得制作 AI 艺术提示需要秘密和魔法&#xff1f;当您的所有提示都失败时&#xff0c;所有这些创意专业人士如何在Midjourney和DALL-E等工具中创建令人惊叹的&#xff0c;令人兴奋的视觉效果&#xff1f; 现实情况是&#xff0c;创建很酷的AI艺术提示并不像看起来那么复…

2天300+作品,Midjourney将彻底颠覆食品包装设计!

Midjourney设计的“世界最可爱的零食包装 原本是为了提高效率让短视频团队去研究AI&#xff0c;结果我自己却陷进了Midjourney&#xff08;AI绘画工具&#xff09;&#xff0c;连玩一周。可以说&#xff0c;Midjourney给我在图片领域带来的震撼&#xff0c;以及它将对设计领域的…

stable-diffusion 安装和使用

安装&#xff1a; 在电脑上安装环境依赖 继续安装 把下面这两个文件复制到stable-diffusion-webui 下面 点击A启动器&#xff0c;启动stable-diffusion&#xff0c;然后点击~运行中~ 然后看到弹出控制台后&#xff0c;等待~ 第一次会等待时间会稍微久一点&#xff08;这个是单机…

OpenAI DALL·E 绘画机器人

快过年了&#xff0c;在公司也没啥任务&#xff0c;索性尝试使用OpenAI的DALLE生成一些好玩的图片。 OpenAI DALLE 官方介绍&#xff1a; DALLE 是一种由 OpenAI 开发的大型语言模型&#xff0c;其能够通过生成图像和文本来完成各种任务。其名称来源于绘画机器人 WALLE 和艺术家…