序言

👉🏻👉🏻👉🏻B站视频地址点我跳转,不要白嫖,老爷们还请多多点赞支持

​ Mybatis目前已经是国内互联网后端开发中的主流框架,而Mybatis针对于单表增删改查也是需要写sql的,这无疑会增加我们的开发工作,也提高了出bug的风险,针对于这种重复性强的工作我们可以用代码生成器来解决,目前市面上代码生成器有很多,最原始的是通过代码+配置文件的方式生成的,后来还有maven插件+配置文件方式,现在更多的是通过idea插件来生成,但是任何一种生成器都不能做到下载下来就能适应于我们的项目,比如说我的项目是把实体类放在domain文件夹的,生成器却生成在了entity文件夹,而它也没有提供指定文件生成路径的配置,我只能生成完成之后手动更换一下目录;比如生成的接口类名我想要的是UserDao.java,但是却生成了UserMapper.java,我就得在生成之后更改一下类名;还有新建的表第一次我用代码生成器生成了controller和service,而开发过程中对数据库表结构和字段类型的修改是比较频繁的,我需要用代码生成器重新覆盖实体类和xml文件,生成的文件类型我要可选,不能够把我写了业务逻辑的controller和service覆盖掉,再有生成的实体中我需要带@Builder注解,而生成器无法自定义模板或者不提供此项配置,生成完成之后我还需要改代码,这种细节上的小问题对于我这种强迫症晚期的程序员来说是无法忍受的,于是我就花了一点时间去寻找一个完美的解决方式,今天就在这里把我的结果分享给大家。

实现效果

​ 首先明确一下我们的代码生成器最终要实现的效果:

  1. 代码生成器对我们的项目代码不能有任何侵入性
  2. 功能要强大,配置要简单,可以为任何项目生成代码
  3. 总结一下最终效果就是数据库中表字段变更我们只需要用代码生成器重新覆盖一下实体类和xml文件即可,无需修改任何代码,就要做到如此丝滑

生成器介绍

方法1:IDEA插件

EasyCode

  • 特点:适用于Mybatis项目和Mybatis-Plus项目
  • 插件主页:EasyCode ,可以直接在Idea的插件商店直接搜索下载
  • 插件使用WiKi:点击查看WIKI文档
  • 本文主要介绍如何通过自定义EasyCode的代码模板来打造符合自己项目的代码生成器
image-20220706185426330
  • 基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。
  • 只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。
  • 支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。

方法2:代码方式

Mybatis-Plus代码生成器

  • 特点:适用于Mybatis-Plus项目
  • 快速入门
  • 基础配置
  • 本文主要介绍我基于Mybatis-Plus代码生成器做的一些小小的改造,并介绍一下使用中的一些技巧

Mybatis篇

前言

​ 现在还没有用上Mybatis-Plus的项目要么是一些比较老旧的项目,要么就是技术老大要求不让用,我建议需求迭代比较频繁的项目还是尽量升级到Mybatis-Plus,提效不止一点点

使用EasyCode打造属于自己的代码生成器

简单介绍一下EasyCode使用

  1. 首先需要使用IDEA链接数据库
  2. 然后选择要生成的表,右键【EasyCode】-【Generate Code】image-20220706194918606
  3. 选择生成文件得模块,包的路径,然后选择要生成的模板组,以及具体模板,每个模板对应每个类
  4. 点击确定即可生成对应得文件,如果没有目录会提升生成目录,如果文件已存在会提示是否覆盖

自定义EasyCode模板

  1. 打开IDEA【偏好设置】-【其他设置】-【EasyCode】即可看到EasyCode的设置界面,如下如image-20220706200349390
  2. 【Type Mapper】类型映射配置,配置数据库字段配型和Java类型的映射
  3. 【Global Config】全局设置,配置,图下图image-20220706200937443
  4. 【Template】模板配置,默认自带分组,我们可以创建自己的模板分组,然后再分组中创建自己的模板,可以从自带的模板分组中复制,可以实时调试,下面描述有详细的说明image-20220706201825296
  5. 选择好数据库表,点击实时调试按钮,就可以实时调试你的代码模板,非常方便image-20220707132925682
  6. 模板调试好之后,就可以使用了,这样就可以打造一套完全属于自己的代码生成器,我自定义的模板我会放在【mybatis-plus-generator】项目中【resource】文件夹下,项目Github地址在文章最后

Mybatis-Plus篇

前言

  • Mybatis-Plus是和Mybatis相比优点是单表操作我们也不需要写sql了,并且他只对Mybatis做增强,不做改变,引入它不会对现有工程产生影响,这使得从Mybatis升级到Mybatis-Plus非常容易,Mybatis-Plus能够极大提升我们的开发效率,对于那些需求变化比较多的项目升级到Mybatis-Plus还是很有必要的。
  • 有些人习惯了使用Mybatis,不想花时间去学习Mybatis-Plus,就会说,我就喜欢写sql,我写习惯了,写sql开发也挺快的,还能锻炼写sql的能力,对于这种说法,我只能说:这种人,他神经病嘛,为了不学习新框架,真的是什么理由都想得出来,锻炼写sql能力有拿简单的单表增删改查去练的吗,你在xml文件上写一年的sql都不如你去大数据平台出报表写一周的sql更能锻炼写sql的能力吧。还有些项目组已经引入了Mybatis-Plus框架,但是Leader要求说为了大家统一风格,都写sql,这种要求实际就是你的Leader看不懂Mybatis—Plus的Lambda写法,为了方便Reaview大家代码,找了个统一风格的理由,这种数据库层面的查询有什么可统一风格的,又不是前端页面,实际展示给客户看的,你咋不要求你们组的人穿的内裤也统一风格呢?统一风格的目的是什么?不还是便于后面的人去维护项目,如果你们组的每个人都能看懂写sql和不写sql的写法,那还有统一风格的必要吗?何况每个人写代码的风格本就不同,你想统一风格干脆你自己一个人写代码得了,风格肯定统一。说了这么多,我主要想表达的其实还是更如何高效的开发,高效好用的东西,要用起来,不要盲目追新,也不要抵触新技术,大多的新技术正是为了解决我们开发中繁琐和重复性强的工作而的出现。

使用官方提供的代码生成器

  • 上面代码已经介绍过Mybatis-Plus官方提供的代码生成器,下面主要介绍我基于官方最新版(3.5.3)做的一些修改,以及自定义代码模板,项目的GitHub地址在文章最后,大家把项目clone下来,修改配置即可运行生成代码。image-20220707151831481
  • 实体类和xml文件我做了自定义模板,个人感觉在这里自定义模板和EasyCode自定义模板比起来还是要复杂的,毕竟这里不能实时调试

使用EasyCode自定义模板

  • Mybatis篇已经介绍过了EasyCode自定义模板,我们只需要自定义一组基于Mybatis-plus的模板即可image-20220707153358327
  • 我自定义的模板我会放在【mybatis-plus-generator】项目中【resource】文件夹下,项目Github地址在文章最后

尾声

本文所涉及的演示代码地址:点击打开演示代码GieHub地址