行业知识
【笔记】:当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架构详解