对会用的人来说,mybatis-plus的wrapper非常好用,不再需要去关注dao层了,但是这需要一定的学习成本,而且不太符合经典的三层架构思维,对一些老前辈来说完全是违反常识的,很别扭。对他们来说,dao层还是拿在自己手里更踏实,给第三方封装起来有点不踏实,

另一方面,现在代码生成器的框架很多,用起来很方便,老前辈们宁愿用“mybatis+代码生成器”的组合,不愿意颠覆自己的思维习惯;当然这样的代价就是自己维护xml文件,很麻烦。

打开网易新闻 查看精彩图片

最近的使用后有一个新的想法,mp不能很方便地多表联查,然后映射成一个vo对象,这样的话service层的业务逻辑会变复杂,多次查询导致性能也会有所下降

虽然mybatis-plus是在mybatis上做了很多增强功能,都是继承mybatis的类,然后修改了相应的某些逻辑。这样固然是轻松巧妙地解决问题的办法,但是也会导致自己的设计不够完美。

一、jar爆冲突

既然增加了scan无法解决的问题,又开始搜索搜索,掉进了其中一个坑,我本来没有同时使用Mybatis和Mybatis的依赖,但就在昨天我脑子抽风,将两个maven都加上了。导致加载sqlSessionFactory时无法创建。

打开网易新闻 查看精彩图片

二、依赖版本:版本不同,位置不同导致老是爆红,让我来来回回地切换版本。

三、最终原因

由于这个报错具有迷惑性,让我以为我的Mapper没有被扫描掉,一直无限排查,修改xml,建立mybatisconfig,还是于事无补。最后偶然的一次机会中,我扫除掉了之前重叠的Mybatis-plus这个依赖并且启动了。奇迹发生了。

后知后觉的debug,发现mapper原来并不为空。再搜索关于mybatisPlus的坑的博客。最终锁定以下原因:mybatis-plus异于mybatis-plus-boot-starter

打开网易新闻 查看精彩图片

原来mybatis-plus并没有自动生成任何语句。即其中的selectList方法要自己来实现。他报错并不是mapper空间没有被找到,而是selectList没有被找到。

毕竟,是基于MyBatis的,而用MyBatis的,都是喜欢写SQL,喜欢写xml的,而MyBatis Plus是写Java的。ORM是自动挡,MyBatis是手动挡,MyBatis Plus是在副驾驶装一个离合器TG:li9047