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


    【当前情况】

    实体类:InteractionQuestion

    实现类Impl:InteractionQuestionServiceImpl questionService

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

    【代码实现——单属性】

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

    1. Page questionPage = questionService.lambdaQuery()
    2. /*
    3. 由于显示的内容中,问题的描述在展示页不进行展示,所以查询的时候将描述属性给去除,节省空间
    4. */
    5. .select(InteractionQuestion.class, new Predicate() {
    6. @Override
    7. public boolean test(TableFieldInfo tableFieldInfo) {
    8. return !tableFieldInfo.getProperty().equals("description"); //指定不需要查询的字段
    9. }
    10. })
    11. .eq(pageQuery.getOnlyMine(), InteractionQuestion::getUserId, userId) //判断是否查询我的问题
    12. .eq(InteractionQuestion::getCourseId, pageQuery.getCourseId())
    13. .eq(pageQuery.getSectionId() != null, InteractionQuestion::getSectionId, pageQuery.getSectionId())
    14. .eq(InteractionQuestion::getHidden, false) //当前问题没有被隐藏
    15. .page(pageQuery.toMpPage("create_time", false));//根据创建时间降序排列

    查询结果:

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

    【代码实现——多属性】

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

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

     

  • 相关阅读:
    干掉复杂的工具类,国产Java工具类库 Hutool 很香!
    Python tkinter-- 第16章 菜单(Menu)属性
    FAIG滤波器
    C#使用Panel
    Bancet开源驱动SDK开发包Java版,开箱即用(楼宇自控,智慧楼宇,智能建筑)
    C++11特性-初始化
    第八章 :如何基于Spring Boot +Mybatis 快速开发 Restful API
    【ASE入门学习】ASE入门系列二十三——顶点偏移
    CommonJs和Es Module的区别
    一套即学即用,受益终身的效率思维
  • 原文地址:https://blog.csdn.net/qq_66862911/article/details/136413679