package com.ruoyi.common.core.mybatisplus.core; import cn.hutool.core.bean.copier.CopyOptions; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.page.PagePlus; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.Function; /** * 自定义 Service 接口, 实现 数据库实体与 vo 对象转换返回 * * @author Lion Li * @since 2021-05-13 */ public interface IServicePlus extends IService { K getVoById(Serializable id, CopyOptions copyOptions, Class kClass); default K getVoById(Serializable id, CopyOptions copyOptions) { return getVoById(id, copyOptions, null); } default K getVoById(Serializable id) { return getVoById(id, new CopyOptions()); } default K getVoById(Serializable id, Function convertor) { return convertor.apply(getById(id)); } List listVoByIds(Collection idList, CopyOptions copyOptions, Class kClass); default List listVoByIds(Collection idList, CopyOptions copyOptions) { return listVoByIds(idList, copyOptions, null); } default List listVoByIds(Collection idList) { return listVoByIds(idList, new CopyOptions()); } default List listVoByIds(Collection idList, Function, List> convertor) { List list = getBaseMapper().selectBatchIds(idList); if (list == null) { return null; } return convertor.apply(list); } List listVoByMap(Map columnMap, CopyOptions copyOptions, Class kClass); default List listVoByMap(Map columnMap, CopyOptions copyOptions) { return listVoByMap(columnMap, copyOptions, null); } default List listVoByMap(Map columnMap) { return listVoByMap(columnMap, new CopyOptions()); } default List listVoByMap(Map columnMap, Function, List> convertor) { List list = getBaseMapper().selectByMap(columnMap); if (list == null) { return null; } return convertor.apply(list); } K getVoOne(Wrapper queryWrapper, CopyOptions copyOptions, Class kClass); default K getVoOne(Wrapper queryWrapper, CopyOptions copyOptions) { return getVoOne(queryWrapper, copyOptions, null); } default K getVoOne(Wrapper queryWrapper) { return getVoOne(queryWrapper, new CopyOptions()); } default K getVoOne(Wrapper queryWrapper, Function convertor) { return convertor.apply(getOne(queryWrapper, true)); } List listVo(Wrapper queryWrapper, CopyOptions copyOptions, Class kClass); default List listVo(Wrapper queryWrapper, CopyOptions copyOptions) { return listVo(queryWrapper, copyOptions, null); } default List listVo(Wrapper queryWrapper) { return listVo(queryWrapper, new CopyOptions()); } default List listVo(Wrapper queryWrapper, Function, List> convertor) { List list = getBaseMapper().selectList(queryWrapper); if (list == null) { return null; } return convertor.apply(list); } default List listVo() { return listVo(Wrappers.emptyWrapper()); } default List listVo(Function, List> convertor) { return listVo(Wrappers.emptyWrapper(), convertor); } PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions, Class kClass); default PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions) { return pageVo(page, queryWrapper, copyOptions, null); } default PagePlus pageVo(PagePlus page, Wrapper queryWrapper) { return pageVo(page, queryWrapper, new CopyOptions()); } default PagePlus pageVo(PagePlus page, Wrapper queryWrapper, Function, List> convertor) { PagePlus result = getBaseMapper().selectPage(page, queryWrapper); return result.setRecordsVo(convertor.apply(result.getRecords())); } default PagePlus pageVo(PagePlus page) { return pageVo(page, Wrappers.emptyWrapper()); } default PagePlus pageVo(PagePlus page, Function, List> convertor) { return pageVo(page, Wrappers.emptyWrapper(), convertor); } boolean saveAll(Collection entityList); }