Mybatis Plus批量更新,批量插入最佳实践

2024-09-02 14:44:54 浏览数 (3)

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));
    }
    

}

0 人点赞