mybatis-plus 自定义 Service Vo接口实现数据库实体与 vo 对象转换返回功能
作者:天空下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接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!