一个API接口的例子,包括单元测试

功能大体需求是通过平台获取该平台的所有节点(节点按省,运营商分组)以及节点的所有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();}
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC+uploadify文件上传

前言 准备筹划一个自己的个人网站&#xff0c;初步的架构设计采用SSH&#xff08;Spring-MVC&#xff0c;Spring&#xff0c;Hibernate&#xff09;&#xff0c;在这里 顺便记录一下设计和开发过程&#xff0c;以备参考。后续会陆续更新文档&#xff0c;如有任何问题&#xff0…

谷歌浏览器怎么更新升级 谷歌浏览器手动更新方法

谷歌浏览器怎么更新升级?作为走在网页浏览器行业最前端的浏览器&#xff0c;谷歌相当受欢迎。浏览器的升级是为了修复漏洞和完善浏览器的功能&#xff0c;但有时候浏览器本身并不会自动升级&#xff0c;当你的电脑管家也没有提醒你软件升级的时候&#xff0c;我们如何手动给谷…

Easyui动态加载后台数据的例子

JS: /**接口验证查询按钮*/ function strategyCheckSearch(){var strategyRows $("#strategyCheckDg").datagrid(getRows);var strategyIp $("#strategyIp").val().trim();var strategyPort $("#strategyPort").val().trim();if(strategyIp.le…

火狐怎么在线升级 火狐浏览器在线升级方法分享

想要尝试最新版本的火狐浏览器&#xff0c;不仅可以前往火狐官网下载最新版本的客户端&#xff0c;还可以将现有的版本进行升级。那么&#xff0c;火狐该怎么在线升级呢?下面小编就来分享一下火狐浏览器在线升级的方法&#xff0c;不清楚具体操作的朋友可以稍作参考。 方法步…

win7系统任务管理器如何强制关闭程序

win7系统是一款大家用了都说好的系统&#xff0c;最近一直有很多的小伙伴们反应不知道win7任务管理器如何强制关闭程序?今天小编就为大家带来了win7系统任务管理器强制关闭程序的方法&#xff0c;让我们一起来看看吧。 win7系统任务管理器如何强制关闭程序&#xff1a; 1、按…

jquery获取checkbox是否选中

$(#checkbox).attr(checked); 返回的是checked或者是undefined&#xff0c;不是原来的true和false了&#xff0c;有关此问题的解决方法如下: <input typecheckbox idcb/> <script> //获取是否选中 var isChecked $(#cb).prop(checked); //或 var isChecked …

win7让任务管理器pid显示出来的方法

win7怎么让任务管理器pid显示出来?win7系统是一款优秀的电脑系统。各种各样的设置都可以帮助用户们更好的使用win7系统&#xff0c;今天小编为大家带来的就是win7任务管理器pid显示出来的设置方法一起来看看吧。 win7让任务管理器pid显示出来的方法&#xff1a; 1、鼠标右键…

stream+springmvc实现文件断点续传

手上有个文件上传的需求&#xff0c;并且要支持断点续传最好要兼容性好一些&#xff0c;之前用过uploadify这个jquery上传插件&#xff0c;但是首先它不支持断点续传而且HTML5版本的竟然要收费&#xff0c;秉承中国特色这里就不予考虑了&#xff1b;于是在网上找到了一个叫 Str…

UC浏览器怎么删除收藏历史?UC浏览器删除收藏历史的操作方法

uc浏览器怎么删除收藏历史?在使用的一个uc浏览器中&#xff0c;就会对浏览器中做删除收藏操作&#xff0c;小编告诉大家怎么删除收藏历史?在使用浏览器的时候&#xff0c;当时搜索的时候&#xff0c;也是是当时需要的&#xff0c;之后就不需要了&#xff0c;那么这个时候就可…

spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚

概述&#xff1a;注释配置相对于 XML 配置具有很多的优势&#xff1a; 它可以充分利用 Java 的反射机制获取类结构信息&#xff0c;这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时&#xff0c;我们就不需要指定 PO 的属性名、类型等信息&#xff0c;如果关系…

傲游浏览器能改字体吗 网页字体设置方法简述

将网页字体调整为喜欢的格式&#xff0c;在一定程度上也能提高用户的使用体验&#xff0c;因此傲游浏览器推出了个性化的“网页字体更改”功能。那么&#xff0c;该如何使用这一功能呢?下面小编就来简单介绍一下傲游浏览器网页字体的设置方法&#xff0c;感兴趣的朋友不妨多多…

QQ浏览器如何开启夜间模式 夜间模式使用技巧分享

在夜晚长时间且高亮度的使用了QQ浏览器后&#xff0c;眼睛不免会觉得干涩。而开启QQ浏览器中的黑暗模式&#xff0c;则可以在一定程度上缓解这一问题!那么&#xff0c;QQ浏览器要如何开启夜间模式呢?下面小编就来分享一下QQ浏览器夜间模式的使用技巧&#xff0c;感兴趣的朋友不…

使用jackson对Java对象与JSON字符串相互转换的一些总结

总结一下自己使用 jackson 处理对象与 JSON 之间相互转换的心得。jackson 是一个用 Java 编写的&#xff0c;用来处理 JSON 格式数据的类库&#xff0c;它速度非常快&#xff0c;目前来看使用很广泛&#xff0c;逐渐替代了 Gson 和 json-lib 。 如果直接引入 jar 包&#xff0…

火狐怎么放大页面?火狐浏览器页面放大技巧

和许多浏览器产品一样&#xff0c;火狐浏览器也支持用户对当前页面进行缩放。当然&#xff0c;不同浏览器产品&#xff0c;页面缩放功能隐藏的位置也各不相同!那么&#xff0c;火狐怎么放大页面呢?下面是小编分享的火狐浏览器页面放大技巧&#xff0c;感兴趣的朋友可不要错过了…

JSON和JS对象之间的互转

1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的转换方式(Firefox&#xff0c;chrome&#xff0c;opera&#xff0c;safari&#xff0c;ie9&#xff0c;ie8)等浏览器&#xff1a; JSON.pa…

森林中的三个小矮人

今天七小编分享经典童话故事《森林中的三个小矮人》&#xff0c;故事中两个小姑娘&#xff0c;一位心地善良&#xff0c;说话会吐出金子;一位丑陋坏心&#xff0c;说话会吐出蛤蟆;来看看怎么回事吧! 从前&#xff0c;一位死了妻子的男人和一位死了丈夫的女人结了婚&#xff0c…

转码与重定向的区别之于SpringMVC

使用转发时&#xff0c;JSP容器将使用一个内部的方法来调用目标页面&#xff0c;新的页面继续处理同一个请求&#xff0c;而浏览器将不会知道这个过程。 与之相反&#xff0c;重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因此转发要比重定向更快,而且跳转到的…

Spring的ApplicationEvent的使用

Spring的ApplicationEvent的使用 Spring 3.0中提供了很多类似*Aware的类&#xff0c;其中ApplicationContextAware接口可以实现我们在初始化bean的时候给bean注入ApplicationConxt&#xff08;Spring上下文对象&#xff09;对象。ApplicationContextAware接口提供了publishEven…

谷歌浏览器地址栏记录怎么删除 Chrome浏览器地址栏记录清除方法

相信那些经常使用谷歌Chrome浏览器的朋友都清楚&#xff0c;这款浏览器软件会在地址栏保存大量的访问记录&#xff0c;其中也包括一些不想保存下来的!那么&#xff0c;谷歌浏览器地址栏记录要怎么删除呢?不清楚具体方法的朋友&#xff0c;还不赶紧收藏学习一下。 方法步骤 在…

使用Java的BlockingQueue实现生产者-消费者

BlockingQueue也是java.util.concurrent下的主要用来控制线程同步的工具。 BlockingQueue有四个具体的实现类,根据不同需求,选择不同的实现类 1、ArrayBlockingQueue&#xff1a;一个由数组支持的有界阻塞队列&#xff0c;规定大小的BlockingQueue,其构造函数必须带一个int参数…