在 MyBatis-Plus 中,除了提供了 BaseMapper 的 CRUD 接口之外,还提供了一系列方便的 Service 接口,用于进一步简化业务层的开发。这些 Service 接口是在 IService 的基础上进行扩展的。以下是常用的 MyBatis-Plus Service 接口及其方法:

1. 基础 CRUD 方法

在 IService 接口的基础上,MyBatis-Plus 的 Service 接口提供了一些默认实现的 CRUD 方法:

  •  boolean save(T entity): 插入一条记录。


  •  boolean saveBatch(Collection<T> entityList): 批量插入记录。


  •  boolean saveOrUpdate(T entity): 插入或更新一条记录,根据主键是否存在判断。


  •  boolean saveOrUpdateBatch(Collection<T> entityList): 批量插入或更新记录,根据主键是否存在判断。


  •  boolean updateById(T entity): 根据主键更新记录。


  •  boolean updateBatchById(Collection<T> entityList): 批量根据主键更新记录。


  •  boolean removeById(Serializable id): 根据主键删除记录。


  •  boolean removeByIds(Collection<? extends Serializable> idList): 批量根据主键删除记录。


2. 其他常用方法

在 MyBatis-Plus 的 Service 接口中还提供了一些其他常用的方法:

  •  T getById(Serializable id): 根据主键查询记录,返回单个实体。


  •  List<T> listByIds(Collection<? extends Serializable> idList): 根据多个主键批量查询记录,返回实体列表。


  •  List<T> list(Wrapper<T> queryWrapper): 根据条件查询记录,返回实体列表。


  •  Map<String, Object> getMap(Wrapper<T> queryWrapper): 根据条件查询记录,返回 Map。


  •  IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper): 分页查询记录,返回分页对象。


  •  List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper): 根据条件查询记录,返回 Map 列表。


  •  List<Object> listObjs(Wrapper<T> queryWrapper): 根据条件查询记录,返回 Object 列表。


  •  int count(Wrapper<T> queryWrapper): 根据条件统计记录数。


3. 示例

以一个 UserService 为例:
import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<User> {

    boolean customSave(User user);

    List<User> customQuery(String name, Integer age);

    // 其他自定义业务方法...
}

实现类:
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

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

    @Override
    public boolean customSave(User user) {
        // 自定义保存逻辑...
        return save(user);
    }

    @Override
    public List<User> customQuery(String name, Integer age) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name", name)
                .eq("age", age);
        return list(queryWrapper);
    }

    // 其他自定义业务方法的实现...
}

通过继承 ServiceImpl 并实现自定义的 Service 接口,可以非常方便地在业务层进行数据库操作,无需编写复杂的 SQL 语句。这些方法都是基于 BaseMapper 提供的方法的封装,提高了业务层的开发效率。在 Service 层,你还可以定义更多自定义的业务方法,根据业务需求进行定制。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7046/MyBatis