发表于: 2017-04-23 21:58:09
1 1357
一.今天完成的
1.发布service,web,前端代码至开发环境
未完成:前端代码未发布
后端代码未配置服务器的hosts(还不确定如何配置,明天问下师兄再配置)
web中进入 resin/conf目录下修改其中的
resin.xml配置文件
前端代码还未上传svn所以未能发布至开发环境
2.完成了几个接口:
获取公司明细信息接口 GET /a/company/{id}
获取职位明细信息接口 GET /a/profession/{id}
删除公司明细信息接口 DELETE /a/u/company/{id}
删除职位明细信息接口 DELETE /a/u/profession/{id}
二.明天计划
1.继续完成将前端代码发布至开发环境
2.继续写接口 获取职业列表接口 GET /a/profession/search
获取公司列表接口 GET /a/company/search
获取公司标签列表接口 GET a/company_tag/{id}
获取热招职位列表接口 GET /a/hotprofession/search
三.今天的收获
1.发布代码到开发环境复习了一波ubuntu常用操作命令
2.写接口挺有意思,
一开始以为接口很简单能写好,后来发现涉及联表,需要考虑的东西越来越多,比如删除职位需要考虑到对公司表和标签表的影响
又比如
获取职位详情接口里需要获取公司标签的相关信息,而职位表里只存有string类型的公司标签id字段,
//获取职位标签,职位标签只能通过职位表的公司标签id来获取
//首先将String类型的公司标签id封装进数组
String [] tagsId = profession.getTagId().split(",");
//再将数组转成集合list,因为接下来要要用到的getObjectsByIds()方法只接收list类型id
List list = Arrays.asList(tagsId);
//调用getObjectsByIds()方法,这个方法能够接收多个id,返回包含多个标签的list
List<CompanyTag> tagList = companyTagService.getObjectsByIds(list);
又比如
//根据公司id取公司标签,公司id和标签是一对多关系
//首先获取标签id
List<Long> companyTagids = companyTagService.getCompanyTagIdsByCompanyId(id,0,10);
//根据标签id获取标签
List<CompanyTag> tagList = companyTagService.getObjectsByIds(companyTagids);
一开始我纠结了很久,如何通过公司id获取公司标签(公司表和标签表是一对多关系),一开始想着通过联表查询,但是在项目中不能使用这类sql语句
后来翻看萝卜多三期代码发现这个
/* 获取公司产品ID */
List<Long> productIds = productService.getProductIdsByCompanyId(id, 0, 10)
居然有种方法getProduceIdsByCompanyId(),这不就是实现联表查询的方法吗?遂点开这个方法进去看
public List<Long> getProductIdsByCompanyId(Long companyId,Integer start,Integer limit)throws ServiceException, ServiceDaoException{
if(log.isInfoEnabled()){
log.info(" get ids by companyId,start,limit : " + companyId+" , "+start+" , "+limit );
}
List<Long> idList = null;
// TODO 参数检查!
if (start == null) {
start = 0;
}
if (limit == null) {
limit = Integer.MAX_VALUE;
}
try {
idList = dao.getIdList("getProductIdsByCompanyId", new Object[] { companyId},start,limit, false);
原来这个方法具体实现是调用dao里的getIDlist()方法,拔出萝卜带出泥,继续点进去看dao里的getIDlist()方法
package com.gemantic.dal.dao;
List getIdList(String var1, Object[] var2, Integer var3, Integer var4, boolean var5) throws DaoException;
原来这个方法在jar包里,也就是说我的项目引人了com.gemantic相关包也能用这个方法咯,这么一来就有解决办法了,
于是自己也在service里增加getCompanyTagIdByCompanyId()方法
然后就可以调用getCompanyTagIdByCompanyId()方法通过公司id获取公司标签了
四.遇到的问题:
假如我在项目中增加一个接口 获取标签明细 GET a/company_tag/{id}
通过传入companyid即可得到公司标签
也就是把我上面大费周章地通过getCompanyTagIdByCompanyId()方法获取公司标签的代码
封装在这个接口里
那么,公司接口中直接调用接口即可获取标签列表了,不就省下了一堆代码,而且贯彻了java有事没事多包装的政策
这样是不是更好?
但是话说接口中调用接口会不会不太好?如果直接调用两个接口的话,好像前端一个点击操作触发不了呢?
这两种方法,哪个好呢?
评论