众所周知,MybatisPlus 对于快速的开发很有用,但是它有一个缺点,就是QueryWrapper和IService的配合,其实是对数据进行操作的。这违反了Controller->Service->Dao->Mapper的定义。

在我的理解看来,Controller其实是对外暴露接口使用的,它通过调用各个Service来完成业务上某个功能,Service负责处理业务逻辑,它通过调用各个Dao来完成业务数据上的处理。而Dao层是一层抽象层,它通过调用Mapper或者JDBC来完成对数据库的读写操作。

而MP它的LambdaQueryWrapper是通过使用实体类的字段和值,来完成对数据库的访问操作的。它的实现是在Service层面上的,因此违反了Controller->Service->Dao->Mapper的定义。

在实际的代码层面,我一般把IService放在Dao包下面。

2023.2.1

最后修改:2023 年 02 月 01 日
如果觉得我的文章对你有用,请随意赞赏