最近好久没更新了,因为年后换了一份新工作,各方面还都需要适应下,不光是生活节奏,上下班时间,重要的是还有所做的项目。新公司是一个做自研B端产品的小公司,主要做面向传统企业和金融企业管理公司现金流的产品。
大概的背景介绍完了,简单聊聊现在手头的工作,可能是因为公司的客户面向传统银行,企业居多,所使用的开发框架springmvc,并且打包也还是war,最后扔到tomcat里启动。啊,这瞬间感觉是,梦回8年前我去实习的场景。在java 的开发中,这已经算是比较原始了,毕竟现在都是用的springboot。
其实在对于我等主要是业务代码开发码农来讲,springmvc和springboot 并没有什么区别,springboot 的优势在在于约定大于配置,在于快速构建项目,现在我是经过好几手的代码来二开并且维护,并不需要从0到1搭建项目,所以单纯从代码开发角度,并没有什么太大的区别。
比较蛋疼的事情来了,本次业务功能需要新建8张表,而且还需要一些基础的增删改查操作,并且ORM框架使用mybatis,所以我首先想到,这些基本操作可以用mybatis-plus来处理。
当我把基础entity对象mapper,已经简单的CURD都创建好了。这时候组长说,项目中不能使用mybatis-plus,原因是引入这个包,对我们业务模块没影响,但是代码库是全公司维护了一个,然后使用mybatis-plus后,一些老的模块和功能就不能用了。
具体的原因呢,我也没有深入地询问,反正就是离了一个大谱子。理论上,mybatis-plus只对mybatis做增强,而不会修改。而mybatisplus的sqlSessionFactory完全继承了mybaits的SqlSessionFactory,在创建出来SqlSessionFactoryBean后,之前使用myabatis的地方不会有问题的。
本来呢,事情到此就算了,反正人家要求咋写就咋写吧,但是呢,我还是觉得,并不是因为mybatisplus的原因,所以想如何在不影响之前的老代码的情况下,引入比较简单的脚手架。
其实mybatis也是需要创建一个SqlSessionFactoryBean来管理数据库操作的会话,通过框架实现,sql和java的对象的映射。
那问题就简单了,我创建两个SqlSessionFactoryBean,一个mybatis原生的, 另外一个用mybatis-plus的SqlSessionFactory,两个bean配置上不同的MapperScan,当新开发的mapper继承下baseMapper,就拥有了基础的CURD功能,无需再编写基本的sql,不仅仅大大节约了开发时间。其次还可以减少很多粗心导致的错误,减少调试时间,比如说编写select的时候漏了某个字段,而这个字段正好前端还需要,这样的问题只有到联调的时才容易暴露出来。
但是呢,这仅仅适用于完全的新加的业务,要是维护以前的老功能,操作数据库走之前的SqlSessionFactoryBean,还是得一句一句地写sql。
毕竟是刚刚去新公司,还不到一个月,浑身的反骨,等过了几个月,工作的宗旨立马切回到,能跑就不要动。