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项目及开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06SpringBoot项目启动报错:命令行太长解决的两种解决方法
SpringBoot项目启动时可能会遇到命令行太长的错误,本文介绍两种解决方法修改.idea\workspace.xml文件和执行maven的clean命令或重启IDEA,这些操作可以有效解决启动问题,需要的朋友可以参考下2024-10-10idea2020.2卡死在reading maven projects
这篇文章主要介绍了idea2020.2卡死在reading maven projects,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-09-09Springcloud feign传日期类型参数报错的解决方案
这篇文章主要介绍了Springcloud feign传日期类型参数报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03Springboot+Jackson自定义注解数据脱敏的项目实践
数据脱敏可以对敏感数据比如 手机号、银行卡号等信息进行转换或者修改,本文主要介绍了Springboot+Jackson 自定义注解数据脱敏,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-08-08
最新评论