From b0417338ccc0c4381a65dc0a709e7473564bd589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Thu, 13 May 2021 21:24:47 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E7=89=88=E9=80=9A=E7=94=A8Service=20IServicePlus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/core/page/IServicePlus.java | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java new file mode 100644 index 00000000..864a38e8 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java @@ -0,0 +1,126 @@ +package com.ruoyi.common.core.page; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 自定义 Service 接口, 实现 数据库实体与 vo 对象转换返回 + * + * @author Lion Li + * @since 2021-05-13 + */ +public interface IServicePlus extends IService { + + /** + * 根据 ID 查询 + * + * @param kClass vo类型 + * @param id 主键ID + */ + default K getVoById(Serializable id, Class kClass) { + T t = getBaseMapper().selectById(id); + return BeanUtil.toBean(t, kClass); + } + + /** + * 查询(根据ID 批量查询) + * + * @param kClass vo类型 + * @param idList 主键ID列表 + */ + default List listVoByIds(Collection idList, Class kClass) { + List list = getBaseMapper().selectBatchIds(idList); + if (list == null) { + return null; + } + return list.stream() + .map(any -> BeanUtil.toBean(any, kClass)) + .collect(Collectors.toList()); + } + + /** + * 查询(根据 columnMap 条件) + * + * @param kClass vo类型 + * @param columnMap 表字段 map 对象 + */ + default List listVoByMap(Map columnMap, Class kClass) { + List list = getBaseMapper().selectByMap(columnMap); + if (list == null) { + return null; + } + return list.stream() + .map(any -> BeanUtil.toBean(any, kClass)) + .collect(Collectors.toList()); + } + + /** + * 根据 Wrapper,查询一条记录
+ *

结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")

+ * + * @param kClass vo类型 + * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} + */ + default K getVoOne(Wrapper queryWrapper, Class kClass) { + return BeanUtil.toBean(getOne(queryWrapper, true), kClass); + } + + /** + * 查询列表 + * + * @param kClass vo类型 + * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} + */ + default List listVo(Wrapper queryWrapper, Class kClass) { + List list = getBaseMapper().selectList(queryWrapper); + if (list == null) { + return null; + } + return list.stream() + .map(any -> BeanUtil.toBean(any, kClass)) + .collect(Collectors.toList()); + } + + /** + * 查询所有 + * + * @param kClass vo类型 + * @see Wrappers#emptyWrapper() + */ + default List listVo(Class kClass) { + return listVo(Wrappers.emptyWrapper(), kClass); + } + + /** + * 翻页查询 + * + * @param page 翻页对象 + * @param queryWrapper 实体对象封装操作类 + * @param kClass vo类型 + */ + default PagePlus pageVo(PagePlus page, Wrapper queryWrapper, Class kClass) { + PagePlus e = getBaseMapper().selectPage(page, queryWrapper); + page.recordsToVo(kClass); + return page; + } + + /** + * 无条件翻页查询 + * + * @param page 翻页对象 + * @param kClass vo类型 + */ + default PagePlus pageVo(PagePlus page, Class kClass) { + return pageVo(page, Wrappers.emptyWrapper(), kClass); + } + +} +