功能大体需求是通过平台获取该平台的所有节点(节点按省,运营商分组)以及节点的所有IP信息(地址和层级),表关系比较复杂,搞了两天才好,是自己一开始搞复杂了。

VO:存放所需元素实体类

public class PlatformIpVO implements Serializable {private String province;private String ISP;private List<PlatformMachineIp> platformMachineIps;private String platformNodes;getters and setters...
}

Service:

/**据平台查询区域数据,省,isp,ip等 */
public List<PlatformIpVO> getIpsAreaByPlatform(String platform);
@Override
public List<PlatformIpVO> getIpsAreaByPlatform(String pl_name_en) {pl_name_en = StringUtils.trimToEmpty(pl_name_en);if(pl_name_en.equals("")){return null;}List<PlatformIpVO> tempPlatformIpVOs = new ArrayList<PlatformIpVO>();List<PlatformIpVO> platformIpVOs = new ArrayList<PlatformIpVO>();PlatformInfo platformInfo = this.platformInfoMapper.findPlatformByEname(pl_name_en);//根据英文名获取平台idtempPlatformIpVOs = this.platformInfoMapper.getNodesByPlatform(platformInfo.getPlId());for(PlatformIpVO platformIpVO : tempPlatformIpVOs){//重新封装vo,添加ip信息platformIpVO = wrapPlatformIpVO(platformIpVO);platformIpVOs.add(platformIpVO);}return platformIpVOs;
}

Method:

/**重新封装platformIpVO,给PlatformMachineIps赋值*/
PlatformIpVO wrapPlatformIpVO(PlatformIpVO platformIpVO){String ispShortname = this.platformInfoMapper.getIspShortnameByid(platformIpVO.getISP());platformIpVO.setISP(ispShortname);String[] platformNodes = platformIpVO.getPlatformNodes().split(",");List<PlatformMachineIp> platformMachineIps = this.platformMachineMapper.getMachineIpsByNodes(platformNodes);platformIpVO.setPlatformMachineIps(platformMachineIps);return platformIpVO;
}

Mapper.java:

/** 根据平台id获取节点*/
List<PlatformIpVO> getNodesByPlatform(@Param("pl_id") Integer pl_id);/** 通过isp的id获取shortname */
String getIspShortnameByid(@Param("isp") String isp);

Mapper.xml:

<!-- 通过平台id获取平台节点vo对象,不包含ip fangguitang@dnion.com-->
<select id="getNodesByPlatform" resultType="PlatformIpVO">SELECT pn.province AS province,pn.nd_isp AS ISP,GROUP_CONCAT(pn.nd_id) AS platformNodesFROM platform_info pi LEFT JOIN platform_node_relation pnr ON pnr.pl_id = pi.pl_idLEFT JOIN platform_node pn ON pn.nd_id = pnr.nd_idWHERE pi.pl_id = #{pl_id}GROUP BY pn.province,pn.nd_isp
</select>
<!-- 通过isp的id获取shortname -->
<select id="getIspShortnameByid" resultType="STRING">SELECT si.shortnameFROM system_isp siWHERE si.id = #{isp}
</select>

Test:测试类:

//通过平台获取节点信息,ip信息
@Test
@Rollback
public void testGetIpsAreaByPlatform(){String platform = "XNOP060";try {ipPlatformService.getIpsAreaByPlatform(platform);} catch (Exception e) {e.printStackTrace();}
}

一个API接口的例子,包括单元测试相关推荐

  1. 推荐一个api接口监控神器

      大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!   今天小编推荐一个api接 ...

  2. 多多客api_编写一个API接口,到底有多多多多多多多简单?

    这里所介绍的API接口 这里所介绍的API接口,主要是指通过HTTP协议调用,提供给客户端应用调用,并以JSON格式返回数据的接口. 编写API接口的最佳方式 编写API接口代码,开发一款API接口, ...

  3. [js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互?

    [js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互? API是一些预先定义的函数,或指软件系统不同组成部分衔接的约定.如果已经建立了连接,那么单次请求数据到请求结束应该是一次交互:如 ...

  4. 人人都是接口开发大师,这个开源项目花5分钟就可以开发一个API接口

    PhalApi开源接口框架 读音:派框架,官网:https://www.phalapi.net/ PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务.支持HTTP/SOAP/RPC等 ...

  5. 如何设计一个API接口

    在日常开发中,总会接触到各种接口.前后端数据传输接口,第三方业务平台接口.一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使用安全框架,所以安全性可以得到很好的保护.这篇文章重点讨论一下提 ...

  6. php 调用新浪微博接口,php调用新浪微博短链接api接口地址例子

    短链接我们可以自己生成当然也可以调用第三方的如我们调用新浪微博短链接api接口即可生成自己要的地址了,下面来看一些小编总结的例子. 新浪短网址接口的稳定性和跳转速度还是很给力的,现给出其API说明. ...

  7. 如何实现1分钟写一个API接口

    Rocket API 官方文档地址:https://www.yuque.com/alenfive/rocket-api 第一步,创建接口 第二步,定义接口 第三步,接口逻辑 第四步,接口访问测试 Ro ...

  8. 推荐一个API接口git地址

    文章目录[隐藏] 简介 接口详情 项目 git 地址 简介 主要是博主用来学习用的,同时帮助新手学习编写自己的 API,仅用作学习交流. 接口详情 最近更新是在 2020/6/1,更新抖音短视频去水印 ...

  9. API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]

    API名称:item_get - 获得suning商品详情 (苏宁) 请求参数:num_iid=0070134261/703410301 参数说明:num_iid:店铺ID/商品ID 注册key和se ...

最新文章

  1. 树链剖分——线段树区间合并bzoj染色
  2. OpenJDK官方正式宣布AWT、2D、Swing等项目解散
  3. 农商互联农民丰收节交易会-万祥军:产销对接谋定功能农业
  4. 用Python实现二叉树的遍历
  5. 程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
  6. mysql怎么复制信息_mysql关于复制的一些信息参考
  7. JAVA回调函数的例子_javascript : 回调函数例子
  8. fedora 不在sudoers文件中_Spring AOP中还有你不知道的JVM Class文件字节码转换知识!...
  9. 设计模式之单例模式8种实现方式,其四:懒汉式(线程安全,同步方法)
  10. spring cloud config client refresh过程
  11. hdu 4640 Island and study-sister(状态压缩dp)
  12. linux异常级别,linux性能异常定位之进程级别
  13. 从php的生命周期来优化页面响应时间
  14. Centos禁止屏幕虚拟键盘弹出
  15. 语音芯片ic分类以及sop8的otp语音芯片对比 选型
  16. 快速原型制造_快速原型初学者指南
  17. 程序员年纪大了干什么
  18. 聚宽macd底背离_MACD背离技术分析(图解)
  19. is not backed by gradle android,Module … is not backed by gradle
  20. Ubuntu18.04 实现串口通信

热门文章

  1. 数字图像处理图像反转的实现_反转8位数字| 8085微处理器
  2. 服务器硬件oid,HPE ProLiant DL580 Gen10 服务器
  3. java 写入xml文件_java读写xml文件
  4. java数据类型_JAVA基础篇(数据类型)
  5. python调用菜单响应事件_Python处理菜单消息操作示例【基于win32ui模块】
  6. c++局部对象是什么_程序员每日一题-GCROOT对象
  7. linux 文件浏览器_浏览Linux文件系统
  8. c#中将整数转化为字符串_在C#中将字符串转换为字节数组
  9. Java FilterInputStream skip()方法与示例
  10. 水印生成器第2版[原图质量水印可自定义设置]