码迷,mamicode.com
首页 > Windows程序 > 详细

【多表WebApi接口】多表WebApi接口有感

时间:2019-11-04 17:42:46      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:list   接口   als   one   合并   怎么   权限   span   pat   

  前言:

    在昨天前辈教我了如何在项目里编写一个单表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接口有感

标签:list   接口   als   one   合并   怎么   权限   span   pat   

原文地址:https://www.cnblogs.com/zhuii/p/11792873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!