多表WebApi接口多表WebApi接口有感

Posted zhuii

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多表WebApi接口多表WebApi接口有感相关的知识,希望对你有一定的参考价值。

  前言:

    在昨天前辈教我了如何在项目里编写一个单表WebApiCRUD接口,大致流程就是利用Mybatis逆向工程,生成需要的Bean,Api,Mapper,Service,export。然后把生成的这些东西放到WebApi项目即可。然后通过Git合并代码,打包,启动服务,最后控制接口的访问权限。

  开发:

    刚开始PO给我这个需求时,真的是一脸懵,自己昨天才学会单表的API接口,今天就叫我写多表了......今天一上午都在想我该怎么建文件?建在哪里?为什么有这么多注解?我用不了基类那我该用什么?诸如此类等等。后面去看了项目的目录结构,一边看一边想,发现多表和单表开发其实差不多。区别在于单表的基类写好了,如CRUDService,CRUDServiceImpl,CRUDImpl等等,所以只需要逆向工程里的Bean,Api,Mapper这些。

    如果需要多表接口的话,那么用不了逆向工程了,需要自己写。和一般Web开发一样,需要写Action,Service,ServiceImpl,Dao,Mapper,Bean,只多了一个名为Api的Interface,而我们写的Action需要实现这个ApiInterface。

  具体:

    在ApiIterface接口上有@FeignClient注解,表示可被外部访问。

@FeignClient("WebApiStandard")
public interface ReturnMetalApi{
    ArrayList<MetalDto> selectMany(String pi);
}

    ApiImpl有@APi,@RestController,@RequestMapping三个注解,将Service用@AutoWired注入,实现ApiIterface中的方法,并在方法上加@ApiOperation,@ApiImplicitParams,@RequestMapping,@Override注解。并调用Service中的方法。SwaggerApi注解详见:https://github.com/swagger-api/swagger-core/wiki/Annotations

@Api(tags={"金属多条查询接口"},description="金属多条查询接口<b>,主键:pi</b>")
@RestController
@RequestMapping("ReturnMetal")
public class ReturnMetalApiImpl implements ReturnMetalApi{
    @AutoWired
    ReturnMetalService     returnMetalService;
    @ApiOperation(value="多条查询接口",notos="多条查询接口")
    @ApiImplicitParams({})
    @Override
    @RequestMapping("/selectMany")
    public ArrayList<ReturnMetalDto>    selectMany(Stirng pi){
        return returnMetalService.selectMany(pi);
    }
}

    在ReturnMetalService里写上方法声明:

@Service
public interface ReturnMetalService{
    public ArrayList<ReturnMetalDto> selectMany(@PathVariable(value="pi") Stirng pi);
}

    在ReturnMetalServiceiImpl实现ReturnMetalService中的方法:

@Component
public class ReturnMetalServiceImpl implements ReturnMetalService{
    @AutoWired
    ReturnMetalMapper returnMetalMapper;
    public ArrayList<ReturnMetalDto>     
 selectMany(@PathVariable(value="pi") Stirng pi){
    return returnMetalMapper.selectMany(pi);
    }
}

    后面只需要在Mapper Interface里声明方法,并在Mapper.xml实现sql操作。或者Mapper Interface里用Mybatis注解实现sql操作。

  后记:

    写这个接口时,出了一些错,比如在 selectMany方法上刚开始是 @RequestMapping("/selectMany/{pi}"),然后给参数加上@PathVariable(value="pi")注解,但是这样访问一直错误,找不到param of type of String,后面去掉了@PathVariable(value="pi"),映射修改为 @RequestMapping("/selectMany"),这样就对了。然后@RequestMapping应该加在哪个位置,是ApiInterface还是ApiImpl,最后发现都可以,甚至交叉都行!

以上是关于多表WebApi接口多表WebApi接口有感的主要内容,如果未能解决你的问题,请参考以下文章

WebApi接口 - 如何在应用中调用webapi接口

怎样操作WebAPI接口

怎样操作WebAPI接口

MVC WebApi Swagger帮助文档 接口用法

WebAPI接口安全校验

webAPI怎样做到统一接口调用