28个案例问题分析---06---没有复用思想的接口和sql--mybatis,spring
创始人
2024-05-31 13:02:07
0

复用思维

  • 故事背景
        • 没有复用的接口
        • 没有复用思想的接口
  • 优化方案
    • 问题一优化
        • 获取所有的课程
        • 获取某个人创建的课程
    • 问题二优化
  • 升华

故事背景

项目里有两处没有复用的思想的体现。在这里进行总结并且进行优化。以这种思维方式和习惯来指导我们进行开发工作。

没有复用的接口

在这里插入图片描述
通过查看代码可以发现。接口findOnlineUesr和findAllOnlineUser两个接口的返回类型是相同的,只是一个有入参,另一个没有入参。我们万千可以通过一个接口解决这些问题。

没有复用思想的接口

在这里插入图片描述
通过查看代码我们发现。这条动态sql里。course_id = #{course_id} 出现了多此。我们完全可以将这个功能的抽出来。而不是重复的事情做3次。

优化方案

问题一优化

针对问题一。我们实现一个接口。下面将会把代码从
Controller==>IService==>ServiceImple==>mapper 。整个流程依次展示出来。
Controller

    @PostMapping("/queryCourseContent")public List queryCourseContent(@RequestBody CourseContentEntity courseContent){return iCourseContentService.queryCourseContent(courseContent);}

IService

  List queryCourseContent(CourseContentEntity courseContent);

serviceImpl

    @Overridepublic List queryCourseContent(CourseContentEntity courseContent) {return courseContentMapper.queryCourseContentRecord(courseContent);}

mybatis

List queryCourseContentRecord(CourseContentEntity courseContentEntity);

通过这种改造方式。将获取整个系统的在线人员和获取具体某个班级的在线人员就合二为一了。我们只需要通过传递的参数来进行控制即可。让我们来测试一下

获取所有的课程

在这里插入图片描述

我们可以看到,body未传任何数据。查询到了所有的课程。返回的json一共4600多行。

获取某个人创建的课程

在这里插入图片描述
我们在创建人里,传递了某个createdBy字段。现在接口没变,但是我们查出来的就是某个人创建的课程了。

问题二优化

优化前

select id,user_id,user_name,questionnaire_id,activity_name,course_id,class_id,user_answer,start_time,update_time,remark,is_deletefrom`arpro_user_answer`and id=#{id}user_answer=#{user_answer}and course_id = #{course_id}and class_id = #{class_id}and questionnaire_id=#{questionnaire_id}and course_id = #{course_id}and class_id = #{class_id}and course_id = #{course_id}and class_id = #{class_id}and is_delete = 0

仔细分析这个代码我们可以发现。它是提供了四种不同的where查询,而这四种查询都是使用 = 来做的。我们完全没有必要使用 choose、when、otherwise、标签。使用if做一个通用查询就可以
优化后

        select id,user_id,user_name,questionnaire_id,activity_name,course_id,class_id,user_answer,start_time,update_time,remark,is_deletefrom`arpro_user_answer`is_delete = 0 and id = #{id}  and user_answer = #{userAnswer}  and course_id = #{courseId}  and class_id = #{classId}  and user_answer = #{userAnswer} 

我这里还进行了命名的优化。通过这种通用sql的方式。我们避免了重复的代码,降低了出错的概率。在代码的整洁度上也是明显的提高。

升华

写代码的时候,注意复用的重要性。易读性。维护性。努力把我们的代码写的简单,优雅。

相关内容

热门资讯

Anne Hathaway英... Anne Hathaway英语作文 篇一Anne Hathaway: A Versatile and...
中国的农历新年英语作文【通用... Chinese Lunar New YearArticle 1Chinese Lunar New Y...
百万英镑英语读后感【优秀6篇... 百万英镑英语读后感 篇一《百万英镑英语》这本书是我最近读过的一本非常精彩的小说。故事主要讲述了一个平...
我的家(经典6篇) 我的家 篇一我的家是一个平凡而温馨的地方。它位于城市的郊区,周围有一片绿色的田园和一片湖泊。每当我从...
一个警告英语作文(最新3篇) 一个警告英语作文 篇一A Warning: The Dangers of Cyberbullying...
我的爱好英语作文【精选6篇】 我的爱好英语作文 篇一我的爱好英语英语是我最喜欢的学科,也是我最热爱的爱好之一。我对英语的热爱源于它...
英语歌曲《Lonely》的歌... 英语歌曲《Lonely》的歌词  Song:Lonely  Artist:Lou Bega  The...
我的老师英语作文【优质6篇】 我的老师英语作文 篇一我的老师英语作文我非常幸运能够拥有一位出色的英语老师。她是一位年轻而富有激情的...
善良大方的她(优秀3篇) 善良大方的她 篇一善良大方的她是一个令人敬佩的女性。她总是充满着爱心,乐于助人,无私奉献。她的举手之...
考研英语作文经验分析范文【最... 考研英语作文经验分析范文 篇一如何提高考研英语作文水平考研英语作文是考生们备战考研的重要一环,也是考...
高考英语作文送别模板范文(精... 高考英语作文送别模板范文 篇一Farewell to the High School LifeAs ...
英语作文我的偶像(通用3篇) 英语作文我的偶像 篇一My Idol: Taylor SwiftTaylor Swift has a...
保护动物的高中英语作文(经典... 保护动物的高中英语作文 篇一Title: The Importance of Protecting ...
亚运会的英语作文(优质4篇) 亚运会的英语作文 篇一:欢迎亚运会的到来The Arrival of Asian GamesThe ...
英语消防演练告知信范文(优选... 英语消防演练告知信范文 篇一Subject: Fire Drill Exercise – Manda...
勇于放弃的英语作文【通用5篇... 勇于放弃的英语作文 篇一Title: The Courage to Let GoIn life, w...
my dream job英语... my dream job英语作文(通用24篇)  无论是在学校还是在社会中,大家都经常接触到作文吧,...
暑假安排的英语作文(经典3篇... 暑假安排的英语作文 篇一Title: My Exciting Summer Vacation Pla...
家庭英语作文【实用6篇】 家庭英语作文 篇一:我的家庭生活My Family LifeMy family is very im...
英语朗读竞赛作文150字(实... 英语朗读竞赛作文150字 篇一The Importance of English Pronuncia...