首页 > 其他分享 >利用接口进行代码复用

利用接口进行代码复用

时间:2024-07-21 10:39:52浏览次数:18  
标签:Map userMap queryUserMap 代码 List 复用 接口 UserIdFunction public

 

  • userQueryServicepublic interface UserQueryService {
        public Map<Long, UserDTO> queryUserMap(List<? extends UserIdFunction> list);
    }

     

  • public interface UserIdFunction {
        Long getUserId();
    }
  • 获取userId的复用代码

    主义泛型参数

    @Slf4j
    @Service
    public class UserQueryServiceImpl implements UserQueryService {
    ​
        @Autowired
        private UserClient userClient;
    ​
         @Override
        public Map<Long, UserDTO> queryUserMap(List<? extends UserIdFunction> list) {
            List<Long> userIds = list.stream().map(UserIdFunction::getUserId).distinct().collect(Collectors.toList());
            List<UserDTO> users = userClient.queryUserByIds(userIds);
            if (CollUtils.isEmpty(users)) {
                log.info("查询不到用户信息:{}", userIds);
                throw new BizIllegalException("网络异常");
            }
            Map<Long, UserDTO> userMap = users.stream().collect(Collectors.toMap(UserDTO::getId, Function.identity()));
            return CollUtils.isEmpty(userMap) ? new HashMap<>() : userMap;
        }
    }
  • 使用的时候,先注入userQueryService,让boardList中的实体类继承UserIdFunction

    Map<Long, UserDTO> userMap = userQueryService.queryUserMap(boardList);

标签:Map,userMap,queryUserMap,代码,List,复用,接口,UserIdFunction,public
From: https://www.cnblogs.com/dragon-proud-sky/p/18314241

相关文章

  • SpringBoot 测试Control接口方法
    在SpringBoot中对Controller接口方法进行测试是保障应用稳定性和正确性的关键步骤: 单元测试: -选择合适的测试框架:常用的有JUnit,它提供了丰富的断言方法和测试运行机制。结合Mockito可以方便地创建模拟对象和设置预期行为。-针对业务逻辑:重点测试Controller......
  • 【故障诊断】基于斑马优化算法ZOA优化长短记忆网络LSTM实现故障诊断附matlab代码
    %导入数据集load(‘fault_diagnosis_data.mat’);%假设故障诊断数据保存在fault_diagnosis_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%划分训练集和测试集train_ratio=0.8;%训练集占总数据的比例train_size=round......
  • IDEA的APIPost接口测试插件详解
    APIPOST官方网址一、安装APIPost插件打开IntelliJIDEA:启动您的IntelliJIDEA开发环境。导航到插件设置:在Windows或Linux上,点击File>Settings。在macOS上,点击IntelliJIDEA>Preferences。搜索并安装APIPost插件:在设置窗口中,选择Plugins。点击Marketplace标签......
  • 第三节:面向切面解决问题、本地消息表实现最终一致性、热门接口耗时长问题
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 我在 Python 时间格式化函数中遇到代码问题
    我一直在研究一个Python函数,将给定的秒数转换为可读的时间格式(HH:MM:SS)。该函数对于大多数测试用例都能正常工作,但对于一些特定的输入会失败。这是我编写的函数:defmake_readable(seconds):ifseconds<60:s1=secondsh1,m1=(0,0)return......
  • Python 是一种选择性解释语言吗?为什么下面的代码不起作用?
    由于程序是从上到下运行的,为什么下面的代码不执行块中的第一行就直接抛出错误?if5>2:print("TwoislessthanFive!")print("Fiveisgreaterthantwo!")错误:文件“/Users/____/Desktop/Pythonpractise/practise.py”,第3行print("五比二大!")Indentati......
  • 有人可以解决我的代码中的问题吗?而且我无法在我的电脑上安装 nsetools。如何在 python
    从nsetools导入Nseimportpandasaspdnse=Nse()all_stock_codes=nse.get_stock_codes()companies_with_low_pe=[]对于all_stock_codes中的代码:如果代码=='符号':继续尝试:stock_quote=nse.get_quote(代码)pe_ratio=stock_quote.get('priceT......
  • 代码随想录数组二刷:长度最小的子数组(滑动窗口)
    代码随想录数组二刷:长度最小的子数组(滑动窗口)leetcode209这道题采用滑动窗口的思想去做。实现滑动窗口,主要确定如下三点:窗口内是什么?如何移动窗口的起始位置?如何移动窗口的结束位置?窗口就是满足其和≥s的长度最小的连续子数组。窗口的起始位置如何移动:如果当前窗口......