目前所在的公司做的是健康产业方面的APP,这个产品包括了安卓和IOS还有web三方面,除了要写后台管理的系统外,还要写移动端的接口。第一次写移动端接口就犯了一个错误,以为和web一样是怎么方便怎么来,然后和移动端人员对接的时候才知道为了程序的高效率最好是一个接口就能展示出整个页面的内容,而我原来写的代码确要移动端人员调用3个接口,查询数据库3次,效率低下。然后移动端人员给了以下数据展示需求:

展示hot热门音乐类型集合和recommend推荐音乐类型2个集合的数据,而recommend集合下又包含有music音乐集合的数据,即展示hotList和recommendList{musicList}中的数据。刚开始写的时候我是写一个接口分别通过字段hot和recommend查询hotList和recommendList2个集合的数据,然后另写一个接口查询musicList集合的数据。然后经过和移动端的同事交流和技术经理的指导后修改了接口代码如下:

    @RequestMapping(value = {"getHotRecommend"})
@ResponseBody
@RequiresUser(required = false)
public Result getHotRecommend() {
//获取热门或者推荐类型
List<MusicType> hotRecommendList = musicTypeService.selectHotList(); List<MusicType> recommendList = new ArrayList<MusicType>(); //新建推荐list
List<MusicType> hotList = new ArrayList<MusicType>(); //新建热门list List<MusicType> resultList = new ArrayList<MusicType>(); if(CollectionUtil.isNotEmpty(hotRecommendList)){
for(MusicType musicType : hotRecommendList){ if(musicType.getRecommend() == 1){
recommendList.add(musicType);
} if(musicType.getHot() == 1){
hotList.add(musicType);
} }
}
if(CollectionUtil.isNotEmpty(recommendList)){
for(MusicType m : recommendList){
//拿到id,获取音乐list
List<HealthMusic> list = healthMusicService.findMusicListByRecommend(m.getId());
m.setMusicList(list);
resultList.add(m);
}
} Map map = new HashMap();
map.put("hotList",hotList);
map.put("recommendList",resultList);
return Result.successResult().setObj(map);
}

一次查询出hotList和recommendList集合中的数据,经过一次循环把hotList和recommendList分开,比原来少了一次对数据库的骚扰,多了一次循环,在数据量不大的循环效率比较高,至于查询音乐musicList和原来写的差不多,至于更好的写法、更好的优化可以慢慢探讨。

一个APP页面一个接口的更多相关文章

  1. 教你判断一个APP页面是原生的还是H5页面 。(还没看)

    来源:https://www.25xt.com/appdesign/11851.html 刚好是周末,无意之间学堂君在收集相关资料的时候,发现有部分童鞋在问<如何判断一个APP页面是不是H5页面 ...

  2. 12小时包你学会基于ReactMix框架的ReactNativeApp开发(二)基于Css+HTML写第一个app页面

    上一篇文章,大家对于ReactMix(https://github.com/xueduany/react-mix)框架有了一个基本认识,知道我们是一个语法糖,帮助大家基于一套代码,所有平台都能跑.那么 ...

  3. 如何判断一个 APP页面是否是H5页面

    1.无网络断开网络,显示404或则错误页面的是H5 2.页面布局a.在手机设置.开发者选项中开启显示布局边界功能:b.进入应用查看布局边界:c.原生应用可以看到各个控件的布局边界,H5只有整个页面的一 ...

  4. 如何判断一个 APP页面是否是H5页面(转载)

    1.无网络断开网络,显示404或则错误页面的是H5 2.页面布局a.在手机设置.开发者选项中开启显示布局边界功能:b.进入应用查看布局边界:c.原生应用可以看到各个控件的布局边界,H5只有整个页面的一 ...

  5. 用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写

    说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把w ...

  6. 一个App完成入门篇(五)- 完成新闻页面

    本节教程将介绍如何用DeviceOne简单而高效的完成一个新闻页面. 导入项目 数据模板分离MVVM模型 自定义事件 展示新闻 九宫格展示 将要学习的demo效果图如下所示 1. 导入完整项目 本节示 ...

  7. 为Go Web App 创建一个主页面

    原文地址    大多数web app都有一个相同的布局.这个布局可能包含一个header或者footer,甚至可能包含一个导航菜单.Go的标准库提供一个简单的方式来创建这些基本元素,通过被不同的页面重 ...

  8. 我的第一个python web开发框架(18)——前台页面与接口整合

    由于我们前后台系统没有分开,所以前台页面调用接口时,可以直接使用后台管理系统已经完成的接口,不过后台管理系统接口的访问加上了登录验证,所以需要将前台要用到的接口进行处理,让它们设置到白名单当中 我们打 ...

  9. android一个app打开另一个app的指定页面

    一个app打开另一个app的指定页面方法 有以下几种 1.通过包名.类名 2.通过intent的 action 3.通过Url 方案1. ComponentName componentName = n ...

随机推荐

  1. JAVA基础2——类初始化相关执行顺序

    类初始化相关执行顺序 几个概念说明 代码块的含义与作用 static静态代码块: 一般用于初始化类中的静态变量.比如:给静态的数组或者list变量赋初值.使用static静态代码块进行初始化与直接在定 ...

  2. Vue使用Echarts以及Echarts配置分享

    一.本篇文章将给大家分享如何在vue中使用echart以及echart各项配置,这些配置都是工作中比较常见以及常用到的,所以给大家分享下,希望对大家有用. 二.vue中使用echart. 1.首先下载 ...

  3. 简单背包问题(0032)-swust oj

    简单背包问题(0032) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 5657 Accepted: 1714 Accepted 搜 ...

  4. webuploader 实现图片批量上传

    1.导入资源 2.JSP代码 <div class="page-container"> <div class="row cl"> < ...

  5. 【深度学习系列】用PaddlePaddle和Tensorflow实现AlexNet

    上周我们用PaddlePaddle和Tensorflow实现了图像分类,分别用自己手写的一个简单的CNN网络simple_cnn和LeNet-5的CNN网络识别cifar-10数据集.在上周的实验表现 ...

  6. PCA, SVD以及代码示例

    本文是对PCA和SVD学习的整理笔记,为了避免很多重复内容的工作,我会在介绍概念的时候引用其他童鞋的工作和内容,具体来源我会标记在参考资料中. 一.PCA (Principle component a ...

  7. bootstrap validator 使用 带代码

    如何使用bootstrapVlidator插件? 下载bootstrapVlidator插件 在需要使用的页面引入bootstrapVlidator的js文件和css文件 如: 注: 在此基础之前必须 ...

  8. WPF依赖对象(DependencyObject) 实现源码,理解WPF原理必读

    /// DependencyObject encompasses all property engine services. It's primary function /// is providin ...

  9. 17. ZooKeeper常见的分布式系统任务——屏障

    以后几节中主要介绍以下内容: 如何执行领导者选举,组员管理和两阶段提交协议等常见的分布式系统任务 如何实现一些分布式数据结构,如屏障(barrier),锁(lock)和队列(queue) 这一章中概述 ...

  10. svn服务器的搭建与使用一

    转载出处 Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: ht ...