小工具知识网

当前位置: 首页 > 行业知识 > 【笔记】:当SQL需要查询的字段过多,且存在个别字段不需要作展示,即去除指定查询字段,节省响应时间

行业知识

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

2026-11-01 20:31:31 来源:互联网转载

【当前���况】

实体类:InteractionQuestion

实现类Impl:InteractionQuestionServiceImpl questionService

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

【代码实现——单属性】

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

Page questionPage = questionService.lambdaQuery()                /*                    由于显示的内容中,问题的描述在展示页不进行展示,所以查询的时候将描述属性给去除,节省空间                 */                .select(InteractionQuestion.class, new Predicate() {                    @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 excludedFields = new HashSet(Arrays.asList("description", "field2", "field3"));    Page questionPage = questionService.lambdaQuery()          .select(InteractionQuestion.class, new Predicate() {              @Override              public boolean test(TableFieldInfo tableFieldInfo) {                  // 检查字段名是否在不需要查询的字段集合中                  return !excludedFields.contains(tableFieldInfo.getProperty());              }          })          // 其他查询条件和操作...          .page(pageNum, pageSize)          .list();

 

上一篇:远程服务器怎么安装证书?

下一篇:YOLOv8架构详解