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内部bean和级联属性用法详解

    Spring内部bean和级联属性用法详解

    这篇文章主要介绍了Java内部bean和级联属性用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • MyBatis-Plus如何使用枚举自动关联注入详解

    MyBatis-Plus如何使用枚举自动关联注入详解

    这篇文章主要给大家介绍了关于MyBatis-Plus如何使用枚举自动关联注入的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用MyBatis-Plus具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Java源码解析之SortedMap和NavigableMap

    Java源码解析之SortedMap和NavigableMap

    今天带大家来学习Java SortedMap和NavigableMap,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Mybatis Plus 增删改查的实现(小白教程)

    Mybatis Plus 增删改查的实现(小白教程)

    本文主要介绍了Mybatis Plus 增删改查,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • java生成饼图svg及JFreeChart生成svg图表

    java生成饼图svg及JFreeChart生成svg图表

    java生成饼图svg,代码实现感觉有点复杂,个人认为不如用JFreeChart,这篇文章主要介绍java生成饼图svg及JFreeChart生成svg图表,有需要的小伙伴可以参考下
    2015-08-08
  • Java  队列 Queue 用法实例详解

    Java 队列 Queue 用法实例详解

    本文实例讲述了Java内置队列类Queue用法,分享给大家供大家参考
    2017-04-04
  • Java中的排序与内部比较器Compareable解析

    Java中的排序与内部比较器Compareable解析

    这篇文章主要介绍了Java中的排序与内部比较器Compareable解析,一般没有特殊要求时,直接调用(底层默认的升序排列)就可以得到想要的结果,所谓的 sort 方法排序底层都是基于这两种排序,故如果需要设计成所想要的排序就需要了解底层排序原理,需要的朋友可以参考下
    2023-11-11
  • SSH框架网上商城项目第25战之使用java email给用户发送邮件

    SSH框架网上商城项目第25战之使用java email给用户发送邮件

    这篇文章主要为大家详细介绍了SSH框架网上商城项目第25战之使用java email给用户发送邮件,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 详解如何解析pom文件方法示例

    详解如何解析pom文件方法示例

    这篇文章主要为大家介绍了详解如何解析pom文件方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Java 3种方法实现进制转换

    Java 3种方法实现进制转换

    这篇文章主要介绍了Java 3种方法实现进制转换,帮助大家利用Java处理数据,感兴趣的朋友可以了解下
    2020-09-09

最新评论