编程日记 后端tags过滤器

编程日记 后端tags过滤器

image-20240825155111039

这样查出来了所有的信息,不对

检查是这个地方有问题

image-20240825155220357

改掉

@Override
    public List<User> searchUsersByTags(List<String> tagNameList) {
        //1.先查询所有用户
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        List<User> userList = userMapper.selectList(queryWrapper);
        Gson gson = new Gson();
        //2.在内存中判断是否包含所要求的标签
        return userList.stream().filter(user -> {
            String tagStr = user.getTags();
            Set<String> tempTagNameSet = gson.fromJson(tagStr, new TypeToken<Set<String>>(){}.getType());
            //Optional.ofNullable可以少写一层if判断(如果查询结果为空)
            tempTagNameSet= Optional.ofNullable(tempTagNameSet).orElse(new HashSet<>());
            for (String tagName : tagNameList) {
                if (!tempTagNameSet.contains(tagName)) {
                    return false;
                }
            }
            return true;
        }).map(this::getSafetyUser).collect(Collectors.toList());
        /*        */

image-20240825155334683

ok,成功了

posted @ 2024-09-15 21:53  vast_joy  阅读(16)  评论(0)    收藏  举报