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的方式。我们避免了重复的代码,降低了出错的概率。在代码的整洁度上也是明显的提高。

升华

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

相关内容

热门资讯

惊鸿舞主持词 惊鸿舞主持词汇总  1、《Lightspeed》  男:青春,是阳光下初融的冰雪,叮咚叮咚奏响着奇幻...
主持人串词等 主持人串词等五篇  第一篇:《新款文艺汇演主持人串词》  2014年文艺汇演主持人串词  男1、女1...
初中毕业典礼主持词开场白 初中毕业典礼主持词开场白  时光弹指一挥间悄然而逝,在这个栀子花开的季节,初中学生即将毕业,初中毕业...
运动会主持词 运动会主持词范本合集5篇  根据活动对象的不同,需要设置不同的主持词。随着中国在不断地进步,越来越多...
晚会节目主持串词 晚会节目主持串词  篇一:第五届艺体节节目主持串词  第五届艺体节节目主持串词 下午衔接:各位老师,...
《为了谁》节目主持词 《为了谁》节目主持词  持人在台上所表演的主持词,则是集会的灵魂之所在。下面是小编收集整理的《为了谁...
新郎婚礼致辞 关于新郎婚礼致辞(精选5篇)  在日常学习、工作和生活中,大家都写过致辞吧,致辞是指在举行会议或某种...
乔迁的感谢词 乔迁的感谢词  尊敬的各位来宾、女士们、先生们、亲爱的父老乡亲们:  大家好!  首先我代表我的家人...
开业致辞 开业致辞(通用6篇)  在日复一日的学习、工作或生活中,大家或多或少都用到过致辞吧,致辞要求风格的雅...
80岁生日庆典主持词 80岁生日庆典主持词(精选5篇)  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵...
感恩节活动主持词 2022年感恩节活动主持词  根据活动对象的不同,需要设置不同的主持词。在如今这个中国,我们对主持词...
电视剧《一起同过窗》经典的台... 电视剧《一起同过窗》经典的台词  在社会一步步向前发展的今天,很多情况下我们需要用到台词,台词是用以...
开门红主持词 开门红主持词  活动对象的不同,主持词的写作风格也会大不一样。在现在的社会生活中,主持人在活动中起到...
六一儿童节慰问活动致辞 六一儿童节慰问活动致辞(通用5篇)  在我们平凡的日常里,大家一定都接触过致辞吧,致辞具有有张有弛、...
生日主持词 关于生日主持词范文集锦五篇  主持词要注意活动对象,针对活动对象写相应的主持词。在当今社会生活中,司...
春晚节目主持人 临近春节,中央电视台毫无悬念地对外宣布70后吕逸涛,正式出任2016年猴年央视春晚总导演。消息公布后...
教师节领导简短致辞 教师节领导简短致辞(精选8篇)  在日常学习、工作和生活中,大家都不可避免地要接触到致辞吧,致辞讲求...
同学会主持词 【精华】同学会主持词(通用10篇)  主持词要根据活动对象的不同去设置不同的主持词。在当今社会生活中...
演讲比赛闭幕词 演讲比赛闭幕词范文(精选8篇)  要增加主持词的文化内涵,达到寓教于乐的主持词的写作,在不增加篇幅的...
学子宴主持词 学子宴主持词  各位女士、各位嘉宾、各位亲朋挚友,  合:大家好!  女:今日,初秋丽日,艳阳高照;...