MybatisPlus之BaseMapper和IService

MybatisPlus之BaseMapper和IService

一.BaseMapper

1. BaseMapper简介

BaseMapper 接口的全限定名称为:com.baomidou.mybatisplus.core.mapper.BaseMapper
该接口提供了插入、修改、删除和查询接口.

public interface BaseMapper<T> extends Mapper<T> {
    int insert(T entity);

    int deleteById(Serializable id);

    int deleteById(T entity);

    int deleteByMap(@Param("cm") Map<String, Object> columnMap);

    int delete(@Param("ew") Wrapper<T> queryWrapper);

    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    int updateById(@Param("et") T entity);

    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

    T selectById(Serializable id);

    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

    default T selectOne(@Param("ew") Wrapper<T> queryWrapper) {
        List<T> ts = this.selectList(queryWrapper);
        if (CollectionUtils.isNotEmpty(ts)) {
            if (ts.size() != 1) {
                throw ExceptionUtils.mpe("One record is expected, but the query result is multiple records", new Object[0]);
            } else {
                return ts.get(0);
            }
        } else {
            return null;
        }
    }

    Long selectCount(@Param("ew") Wrapper<T> queryWrapper);

    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);

    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);

    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);

    <P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);

    <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param("ew") Wrapper<T> queryWrapper);
}

从BaseMapper接口可以看到,里面包含了诸多的增删改查的方法,包括分页和部分批量操作接口,基本能满足我们日常开的的需要。但是细心看一下就会发现关于批量操作的接口并不多,像批量插入和批量更新就没有,像这样的业务BaseMappe就不满足了。

2. BaseMapper使用

BaseMapper的使用很简单,我们只需要创建一个xxx.Mapper接口,然后继承BaseMapper接口并且指定他的泛型就可以了。

@Repository
public interface UserMapper extends BaseMapper<UserInfo> {
}

然后通过@Autowired注入到我们的业务类中就可以了

@Service
public class UserServiceImpl{
    
    @Autowired
    UserMapper userMapper;
    public UserInfo queryUserById(String id){
        return userMapper.selectById(id);
    }
}

二. IService

1. Iservice简介

MyBatis-Plus除了通用的Mapper还是通用的Servcie层,这也减少了相对应的代码工作量,把通用的接口提取到公共。其实按照MyBatis-Plus的这种思想,可以自己也实现一些通用的Controller。

IService里面的方法特别多,几乎能满足我们日常中的所有增删改查需求,包括批量操作等一系列方法,感兴趣的话可以进到接口里面详细看一下。

public interface IService<T> {
......

2. Iservice的使用

service层需要继承IService,当然实现层也要继承对应的实现类。

public interface UserService extends IService<UserInfo> {
}

IService 的默认实现类为ServiceImpl.java,这里需要注意的是ServiceImpl中要依赖BassMapper的子类(UserMapper)

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,UserInfo> implements UserService {

}

使用的时候我们注入实现类就可以了

@RestController
public class UserInfoController {

    @Autowired
    UserServiceImpl userServiceImpl;
    public void userFun(){
       List<UserInfo> userInfos = new ArrayList<>();
       // 下面这两个批量操作的方法是BaseMapper中没有的
        userServiceImpl.saveBatch(userInfos);
        userServiceImpl.updateBatchById(userInfos);
    }
}

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值