- com.baomidou.mybatisplus.core.mapper.BaseMapper
- com.baomidou.mybatisplus.extension.service.IService
经常使用mybatis的开发朋友们都知道mybatis提供了上述两种类型的预定义接口来帮助我们做单表的增删改查操作,IService方式和BaseMapper这两种方式的区别以及联系是如何的呢? 下面我们来分析~~
接口区别
- 首先从提供的方法上名字有些许不同,功能大致是类似的,但是IService提供了更多的接口,包括BaseMapper不支持的批量增删改。更确切的来说,IService<M,T> 针对业务逻辑层的封装 需要指定Dao层类和对应的实体类 是在BaseMapper基础上的加强,因为其内部方法实现依旧调用的是BaseMapper里面的接口。如果你需要使用mp提供的批量接口,使用Iservice是比较合适的。
- IService的的默认是ServiceImpl<Dao,Entity> 需要提供Dao和对应的Entity,如果只想用其中一个,而且你觉得IService依赖BaseMapper比较多此一举,想要直接使用BaseMapper但有舍不得IService提供的批量增删改的功能,那就往下看如何通过自定义BaseMapper来加入批量功能的实现吧。
1. 自定义BaseMapper
package momenta.hdmap.antbear.common.mpbase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
import java.util.List;
/**
* 自定义baseMapper&#