mybatis-plus 自定义 Service Vo接口实现数据库实体与 vo 对象转换返回功能

 更新时间:2024年08月16日 14:47:03   作者:天空下sky  
这篇文章主要介绍了mybatis-plus 自定义 Service Vo接口实现数据库实体与 vo 对象转换返回功能,本文通过实例图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

1、自定义service 转换 类

public interface IServicePlus extends IService {

/**
 * 根据 ID 查询
 *
 * @param kClass vo类型
 * @param id     主键ID
 */
default <K> K getVoById(Serializable id, Class<K> kClass) {
    T t = getBaseMapper().selectById(id);
    return BeanUtil.toBean(t, kClass);
}
/**
 * 根据 ID 查询
 *
 * @param id        主键ID
 * @param convertor 转换函数
 * @param <K>       vo类型
 */
default <K> K getVoById(Serializable id, Function<T, K> convertor) {
    T t = getBaseMapper().selectById(id);
    return convertor.apply(t);
}
/**
 * 查询(根据ID 批量查询)
 *
 * @param kClass vo类型
 * @param idList 主键ID列表
 */
default <K> List<K> listVoByIds(Collection<? extends Serializable> idList, Class<K> kClass) {
    List<T> list = getBaseMapper().selectBatchIds(idList);
    if (list == null) {
        return null;
    }
    return list.stream()
            .map(any -> BeanUtil.toBean(any, kClass))
            .collect(Collectors.toList());
}
/**
 * 查询(根据ID 批量查询)
 *
 * @param convertor 转换函数
 * @param idList    主键ID列表
 */
default <K> List<K> listVoByIds(Collection<? extends Serializable> idList,
                                Function<Collection<T>, List<K>> convertor) {
    List<T> list = getBaseMapper().selectBatchIds(idList);
    if (list == null) {
        return null;
    }
    return convertor.apply(list);
}
/**
 * 查询(根据 columnMap 条件)
 *
 * @param kClass    vo类型
 * @param columnMap 表字段 map 对象
 */
default <K> List<K> listVoByMap(Map<String, Object> columnMap, Class<K> kClass) {
    List<T> list = getBaseMapper().selectByMap(columnMap);
    if (list == null) {
        return null;
    }
    return list.stream()
            .map(any -> BeanUtil.toBean(any, kClass))
            .collect(Collectors.toList());
}
/**
 * 查询(根据 columnMap 条件)
 *
 * @param convertor 转换函数
 * @param columnMap 表字段 map 对象
 */
default <K> List<K> listVoByMap(Map<String, Object> columnMap,
                                Function<Collection<T>, List<K>> convertor) {
    List<T> list = getBaseMapper().selectByMap(columnMap);
    if (list == null) {
        return null;
    }
    return convertor.apply(list);
}
/**
 * 根据 Wrapper,查询一条记录 <br/>
 * <p>结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")</p>
 *
 * @param kClass       vo类型
 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
default <K> K getVoOne(Wrapper<T> queryWrapper, Class<K> kClass) {
    return BeanUtil.toBean(getOne(queryWrapper, true), kClass);
}
/**
 * 根据 Wrapper,查询一条记录 <br/>
 * <p>结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")</p>
 *
 * @param convertor    转换函数
 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
default <K> K getVoOne(Wrapper<T> queryWrapper, Function<T, K> convertor) {
    return convertor.apply(getOne(queryWrapper, true));
}
/**
 * 查询列表
 *
 * @param kClass       vo类型
 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
default <K> List<K> listVo(Wrapper<T> queryWrapper, Class<K> kClass) {
    List<T> list = getBaseMapper().selectList(queryWrapper);
    if (list == null) {
        return null;
    }
    return list.stream()
            .map(any -> BeanUtil.toBean(any, kClass))
            .collect(Collectors.toList());
}
/**
 * 查询列表
 *
 * @param convertor    转换函数
 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
default <K> List<K> listVo(Wrapper<T> queryWrapper, Function<Collection<T>, List<K>> convertor) {
    List<T> list = getBaseMapper().selectList(queryWrapper);
    if (list == null) {
        return null;
    }
    return convertor.apply(list);
}
/**
 * 查询所有
 *
 * @param kClass vo类型
 * @see Wrappers#emptyWrapper()
 */
default <K> List<K> listVo(Class<K> kClass) {
    return listVo(Wrappers.emptyWrapper(), kClass);
}
/**
 * 查询所有
 *
 * @param convertor 转换函数
 * @see Wrappers#emptyWrapper()
 */
default <K> List<K> listVo(Function<Collection<T>, List<K>> convertor) {
    return listVo(Wrappers.emptyWrapper(), convertor);
}

}

2、接口继承

3、实现vo转换

到此这篇关于mybatis-plus 自定义 Service Vo接口实现 数据库实体与 vo 对象转换返回的文章就介绍到这了,更多相关mybatis-plus 自定义 Service Vo接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Spring Boot搭建Java web项目及开发过程图文详解

    使用Spring Boot搭建Java web项目及开发过程图文详解

    这篇文章主要介绍了使用Spring Boot搭建Java web项目及开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot项目启动报错:命令行太长解决的两种解决方法

    SpringBoot项目启动报错:命令行太长解决的两种解决方法

    SpringBoot项目启动时可能会遇到命令行太长的错误,本文介绍两种解决方法修改.idea\workspace.xml文件和执行maven的clean命令或重启IDEA,这些操作可以有效解决启动问题,需要的朋友可以参考下
    2024-10-10
  • idea2020.2卡死在reading maven projects

    idea2020.2卡死在reading maven projects

    这篇文章主要介绍了idea2020.2卡死在reading maven projects,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Springcloud feign传日期类型参数报错的解决方案

    Springcloud feign传日期类型参数报错的解决方案

    这篇文章主要介绍了Springcloud feign传日期类型参数报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java集成swagger文档组件

    Java集成swagger文档组件

    这篇文章主要介绍了Java集成swagger文档组件,通过详细的图文介绍和代码分析展示,从头展开说明详细的过程,希望对你的开发有所帮助
    2021-06-06
  • SpringBoot实现接口数据的加解密功能

    SpringBoot实现接口数据的加解密功能

    这篇文章主要介绍了SpringBoot实现接口数据的加解密功能,对接口的加密解密操作主要有两种实现方式,文中给大家详细介绍,需要的朋友可以参考下
    2019-10-10
  • Springboot+Jackson自定义注解数据脱敏的项目实践

    Springboot+Jackson自定义注解数据脱敏的项目实践

    数据脱敏可以对敏感数据比如 手机号、银行卡号等信息进行转换或者修改,本文主要介绍了Springboot+Jackson 自定义注解数据脱敏,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • SpringBoot+hutool实现图片验证码

    SpringBoot+hutool实现图片验证码

    本文主要介绍了SpringBoot+hutool实现图片验证码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java Runtime的使用详解

    Java Runtime的使用详解

    这篇文章主要介绍了Java Runtime的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中的HashMap内存泄漏问题详解

    Java中的HashMap内存泄漏问题详解

    这篇文章主要介绍了Java中的HashMap内存泄漏问题详解,WeakHashMap中的key是弱引用,如果再使用之后没有及时remove掉这个key,那么当GC时key就可能会被回收,导致key对应的value对象占用的内存无法回收进而导致内存泄漏,需要的朋友可以参考下
    2023-09-09

最新评论