个人技术总结——SpringBoot中使用VO对象进行联表查询

来杯冷萃-- 学生 2023-06-07 21:46:48
这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标课程回顾与总结、个人技术总结
其他参考文献《构建之法》

目录

  • 一、技术概述
  • 1.1 使用场景
  • 1.2 学习原因
  • 1.3 技术难点
  • 二、技术详述
  • 2.1 实现和使用技术
  • 三、问题和解决过程
  • 四、总结
  • 五、参考文献


一、技术概述

1.1 使用场景

  • 在SpringBoot项目中需要进行多表关联查询

1.2 学习原因

  • 为了逻辑更清晰、更高效地进行多个表的关联查询

1.3 技术难点

  • 对于表之间的关联要弄清楚,写mybatis的xml文件时逻辑要非常清晰,稍有不注意可能就会出错

二、技术详述

  • 首先介绍一下VO对象:
    VO(View Object):显示层对象,是一种将后端的业务数据转换为前端可用数据的数据传输对象,是面向视图的数据对象,它一般是由多个POJO拼接而成的。VO还具有不可修改性,它直接从后端封装好的实体类中提取所需的属性信息,然后将其转换为符合前端界面需求的数据格式,不会影响到后端实体类的内容

  • 由于在写接口时返回给前端的数据来自3个表,此时我先想到可以使用之前所学的MyBatis中的一对多、多对多关联查询,但是写的过程中发现由于有3个表要进行关联,逻辑有些复杂,分析了一会发现还是不太知道如何进行关联,再加上这样子做的话还要修改实体类。于是想说能否找到一个更好地的方法,就了解到了可以引入VO进行联表查询

2.1 实现和使用技术

  • 首先在pojo层下创建vo层

    在这里插入图片描述

  • 创建vo对象,vo对象内对前端需要的数据进行封装,包含需要进行关联的类

    在这里插入图片描述


    在这里插入图片描述

  • 在service层的接口内编写查询方法

    在这里插入图片描述

  • 在service\impl包下的QuestionServiceImpl里重写方法

    在这里插入图片描述

  • 在dao层的UserDao接口内写入

    在这里插入图片描述

  • mybatis的xml文件

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

  • controller层调用

    在这里插入图片描述

  • 流程图

    在这里插入图片描述

三、问题和解决过程

问题1:

  • 描述:在写关联查询时容易报类似这样的错误

    在这里插入图片描述

  • 解决过程:这样通常是因为mybatis的映射文件中出错了,此时要仔细检查一下xml文件中的各种路径是否写错

问题2:

  • 描述:报空指针异常的错误

    在这里插入图片描述

  • 解决过程:当时遇到这个问题时一直没有解决,后来发现是因为在写sql语句时漏写了一个需要的返回值,在写这种关联映射时要很认真,可能一不小心就漏掉了一些数据,有时候这些细微的地又很难以发现

四、总结

  • VO具有清晰、简洁、可读性强等特点,因为它只需要包含前端需要展示的数据即可,对于后端未被使用的属性信息,我们无需将其包含在VO中,从而达到数据传输量减少,减小了服务器的负担和网络传输的压力,提高了系统的性能和可扩展性
  • 在使用VO对象进行联表查询时,将需要的属性放在对象中,编写映射文件时要特别细心

五、参考文献

...全文
1408 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

686

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • 张书旖
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧