1、解决什么问题?
再日常业务开发过程中,总是会遇到批量操作数据库的情况,但我们使用Mybatis Plus的基类BaseMapper只为我们提供了批量查询的能力,而批量更新,批量插入等操作却没有提供。作为初学者如果搜索Mybatis Plus如何实现批量更新,批量插入就会出现一大批莫名其妙的解决方案,其实Mybatis Plus也提供了非常简单实现方式。接下来让我们来一起看一下怎么实现。
2、最佳实践
1、首先定义UserService接口并继承Iservice<T>,在Iservice<T>中定义了许多常用的方法
代码语言:javascript复制public interface UserService extends IService<UserPo> {
void updateByIdBatch(List<UserDTO> userDTOs);
}
2、在Mapper中我们可以采用继承ServiceImpl<M extends BaseMapper<T>, T> 的方式,看ServiceImpl的源码就可以发现它实现了Iservice<T>接口,这样我们就可以采用this.saveBatch()实现批量插入,this.updateBatchById()实现批量更新了。如果你的代码中已经有了Mapper类,这种实现方式也是可以兼容的。
代码语言:javascript复制public class UserServiceImpl extends ServiceImpl<UserPOMapper, UserPO> implements UserService{
@Resource
private UserPOMapper userPOMapper;
@Resource
private UserConverter userConverter;
@Override
public void saveBatch(List<UserDTO> userDTOs) {
this.saveBatch(userConverter.userDTOList2PO(userDTOs));
}
@Override
public void updateByIdBatch(List<UserDTO> userDTOs) {
this.updateBatchById(userConverter.userDTOList2PO(userDTOs));
}
}