在MyBatis-Plus中,extends BaseMapper<UmsSysUser> 和 extends IService<UmsSysUser> 代表了两种不同的设计模式和数据访问层(DAO层)与服务层(Service Layer)之间的区别。
1. extends BaseMapper<UmsSysUser>
BaseMapper 是MyBatis-Plus提供的一个强大的Mapper接口,它继承了MyBatis的Mapper接口,并增加了大量的CRUD(创建、读取、更新、删除)操作的默认实现。当你让你的Mapper接口继承BaseMapper<UmsSysUser>时,你实际上是在告诉MyBatis-Plus:“请为我自动生成针对UmsSysUser实体的所有基础数据库操作方法”。
优点:
减少了样板代码:你不需要为每个实体编写大量的CRUD方法,MyBatis-Plus已经为你准备好了。
易于使用:通过继承BaseMapper,你可以直接使用MyBatis-Plus提供的方法,如insert、selectById、updateById等。
性能优化:MyBatis-Plus在底层对SQL进行了优化,以提高性能。
2. extends IService<UmsSysUser>
IService 是MyBatis-Plus提供的一个服务层接口,它定义了一系列用于业务操作的方法。通常,你不会直接让你的类继承IService,而是会创建一个服务实现类,该类实现IService<UmsSysUser>接口,并在其中编写业务逻辑。同时也提供了更高级的CRUD操作方法,满足了复杂的业务需求。作为一个服务层的抽象接口,它使得业务逻辑的实现更加清晰和聚焦。通过实现IService接口,可以在服务层进行更加灵活和高效的数据操作,同时减少了与数据库直接交互的代码量。
优点
业务逻辑封装:服务层将业务逻辑与数据访问逻辑分离,提高了代码的可维护性和可重用性。
事务管理:服务层可以很容易地实现事务管理,确保业务操作的原子性。
易于测试:由于业务逻辑被封装在服务层,因此可以更容易地进行单元测试或集成测试。
使用场景:
当你需要编写复杂的业务逻辑时。
当你想要将业务逻辑与数据访问逻辑分离时。
当你需要实现事务管理时。
总结
BaseMapper<UmsSysUser> 主要用于数据访问层(DAO层),它提供了大量的CRUD操作方法,让你能够直接操作数据库。
IService<UmsSysUser> 主要用于服务层,它定义了业务操作的方法,你应该在你的服务实现类中实现这些方法,并在其中编写业务逻辑。
在实际项目中,通常会同时使用这两者。你的Mapper接口会继承BaseMapper来提供数据访问功能,而你的服务类会实现IService接口来封装业务逻辑。服务层会调用Mapper层的方法来执行数据库操作,并在此基础上添加业务逻辑。