Mybatis源码解析&特性使用

Mybatis的CRUD代码生成

2020-07-11  本文已影响0人  spring_coderman

近期准备做一下Mybatis的源码解读,整个系列大概会有6-7篇文章。
先释放一下目录:
1.Mybatis框架组件设计&顶层接口
2.Mybatis框架启动流程分析
3.Mybatis框架源码Configuration分析
4.Mybatis框架一条插入语句的执行流程
5.Mybatis框架从源码角度来讲执行增,删,改的时候如何保证线程安全?
6.Mybatis框架一条查询语句的执行流程
7.Mybatis的日志&异常体系
8.Mybatis与Spring集成过程

9.Mybatis的CRUD代码生成

本篇也许是Mybatis源码解读系列的最后一篇文章了,有点跑题了,因为跟源码没有多大关系。但是一般情况下当我们大量使用ORM框架的时候,不可避免的会遇到两类问题。一类是使用过程中会遇到各种异常,另一类就是工程化的效率问题,因为一旦技术选型确定之后,A,B,C,D,E.....等系统中会重复很多相似且大量重复的代码。因此市面上有很多类似的代码生成器。
这里进行源码解读的目的是要知道源码的运行原理,了解使用的技术点,对框架架构整体有个认识。遇到问题能很快定位底层相关的接口。
另一方面也为了对大量工程化系统进行批量构建,生产,提高效率。为后面的大规模微服务创建和运维打好基础。
本文将分为两大块

1.Mybatis代码生成器的技术选型

1.Mybatis generator
作为Mybatis的技术栈,mybatis-generator生成器是比较老牌的代码生成组件了,作为笔者也曾经调研和使用过一两次。整体感觉还不错,但是笔者
发现生成的xml太啰嗦,mapper接口也有很多不会用到的接口,不够简洁。
另一方面,代码生成器作为一次性生成的产物,不能很好的控制模块,如果产生代码覆盖也会影响生产效率。另外项目迭代过程中不同的接口模块的逻辑会更复杂,因此,如果需要变更新增,再使用代码生成器则显得有点笨重了。他的其中一个优势就是足够灵活,可定制化。但是,这也是一种劣势,如果进行深度定制的话,后期维护可能会比较尴尬,因为接手代码的人可能看不懂。或者不认可这样的方式,当新增模块的时候并不会采取这样的方式。尽管有些笔者认为其存在一些不足,但是这仍然是最流行的一个技术方案。
2.Mybatis-plus
笔者在调研mybatis代码生成器的时候,偶然发现了另外一个代码生成器mybatis-plus.这个最近几年也比较火,目前针对于企业级,大规模生产级的项目开发已经足够了,有很多公司,项目在使用。笔者觉得其中一个小缺点就是创建的mapper接口存在继承,这让我想到了另外一个问题,就是接口继承的时候如果接口有问题进行代码排查会比较困难,随着业务深入,业务逻辑变更,继承会导致本模块的代码依赖父类接口实现,导致自身代码维护产生困难。当然也有同学说可定制,最近准备调研一下。
3.easy-code
笔者也发现了另外一个代码生成器,这个是基于idea 插件开发的,看了几篇技术博客发现确实也不错,可定制的。跟业务代码没有耦合,貌似也挺火的。后续有时间的话调研一下。
4.基于以上代码生成器自研的代码生成器
代码生成器的实现有很多,除了以上三种还有基于前两种进行扩展以适应自身需求的,比如有些特殊的项目要求,或者在技术选型的时候就以以上技术作为底座进行企业级开发,在开发过程中优化了代码生成的逻辑,做了定制化。这里就不扩展了

2.自研代码生成器的技术选型

1.笔者最近准备基于租房场景进行大规模开发,基于springboot的方式,组建各种技术组件因此需要使用代码生成器。
2.经过上面的调研,虽然上面的组件都很不错,但是笔者希望做一个可以高度定制化简单化的代码生成器,当然也希望自己撸一个,增加对代码生成器的了解。
笔者之前一段时间没有更新博客也是在搞这个,如下是代码仓库:
https://gitee.com/codergit.com/codeMaker
这里简单介绍一下吧,
1.基于freemarker模板
2.高度定制化,基于自己的需求二次开发配置freemarker模板,通过web请求的方式自动生成代码
3.支持生成任意模块,全量模块,任意模块的任意层(mapper,dao,vo,entity,mapper.xml,service,serviceimpl,controller,pom.xm)
4.少量配置+少量代码即可配置适合自己企业部门的代码工具生成器。
5.遵循少即是多的思想,只生成文件,方法骨架,简单的增删改查。将工具生成的代码和业务代码完全分离,减少无意义的自动生成,适度生成。
6.遵循极简主义,不依赖任何组件,工具,生成的代码按需粘贴到项目中。

上一篇下一篇

猜你喜欢

热点阅读