自学内容网 自学内容网

【笔记】:当SQL需要查询的字段过多,且存在个别字段不需要作展示,即去除指定查询字段,节省响应时间

【当前情况】

实体类:InteractionQuestion

实现类Impl:InteractionQuestionServiceImpl questionService

需要去除的属性字段:private String description

【代码实现——单属性】

 在 lambda 中的 select 处,使用  TableFieldInfo 的匿名内部类方法,进行指定属性字段的过滤查询

Page<InteractionQuestion> questionPage = questionService.lambdaQuery()
                /*
                    由于显示的内容中,问题的描述在展示页不进行展示,所以查询的时候将描述属性给去除,节省空间
                 */
                .select(InteractionQuestion.class, new Predicate<TableFieldInfo>() {
                    @Override
                    public boolean test(TableFieldInfo tableFieldInfo) {

                        return !tableFieldInfo.getProperty().equals("description"); //指定不需要查询的字段
                    }
                })
                .eq(pageQuery.getOnlyMine(), InteractionQuestion::getUserId, userId) //判断是否查询我的问题
                .eq(InteractionQuestion::getCourseId, pageQuery.getCourseId())
                .eq(pageQuery.getSectionId() != null, InteractionQuestion::getSectionId, pageQuery.getSectionId())
                .eq(InteractionQuestion::getHidden, false) //当前问题没有被隐藏
                .page(pageQuery.toMpPage("create_time", false));//根据创建时间降序排列

查询结果:

以上方法适用于单个字段,当有多个字段需要去除时,则需要创建一个集合,将需要去除的属性放入其中

【代码实现——多属性】

 这里,在 return 返回处,使用集合中的 contains 方法,进行属性匹配,挨个去除查询

/ 创建一个集合来存储不需要查询的字段名  
Set<String> excludedFields = new HashSet<>(Arrays.asList("description", "field2", "field3"));  
  
Page<InteractionQuestion> questionPage = questionService.lambdaQuery()  
        .select(InteractionQuestion.class, new Predicate<TableFieldInfo>() {  
            @Override  
            public boolean test(TableFieldInfo tableFieldInfo) {  
                // 检查字段名是否在不需要查询的字段集合中  
                return !excludedFields.contains(tableFieldInfo.getProperty());  
            }  
        })  
        // 其他查询条件和操作...  
        .page(pageNum, pageSize)  
        .list();

 


原文地址:https://blog.csdn.net/qq_66862911/article/details/136413679

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!