发表于: 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有事没事多包装的政策

这样是不是更好?

但是话说接口中调用接口会不会不太好?如果直接调用两个接口的话,好像前端一个点击操作触发不了呢?

这两种方法,哪个好呢?


返回列表 返回列表
评论

    分享到