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

利用接口进行代码复用

时间:2024-07-21 10:39:52浏览次数:9  
标签: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

相关文章