JAVA小白如何快速的在Springboot框架中开发一个查询接口

JAVA小白如何快速的在Springboot框架中开发一个查询接口

今天已经是入职的第49天啦。经过了一个多月的熟悉环境和看项目之后,终于开始写代码啦~ 还有点小激动

本次分配的接口比较简单,大体需求为:根据一个人的user_id,关联课程表和课程学生表这两张表,查询出该user_id满足课程状态为已完成、课程体系代码为xxx、已发证书的数据项总数。如果查询出的数据条数>=1,就返回已完成,否则返回未完成。

SQL语句逻辑还是很简单的,只需要按照class_id关联表并且按一定条件查询就可~

select count(1) 
from 
class_student a
left join 
classinfo b 
on a.class_id = b.class_id
where 
a.isDel != '1' and b.structure_id = ?1 and  a.user_id=?2 and b.status =?3  and a.certificate_num is not null;

底层的逻辑很清晰,但是对我这种新手来说,怎样能写出一套完整的代码实现一个接口才是难点 QAQ

本项目使用的语言是JAVA,框架是SSM框架。(都不怎么会……)

问题不大,这种困难怎么能难得住我呢!

不会自己写,还不会照葫芦画瓢吗。项目里可是有大量的接口供我模仿。于是,在动手写代码之前,我花了几天的时间看现成的接口,理解它是怎么在各个层之间联系,从而实现功能的。

经过几天的学习,我也大概知道了springboot是怎样实现一个接口

JAVA小白如何快速的在Springboot框架中开发一个查询接口_第1张图片

话不多说,开干!

首先在 xxxxController.java文件里写业务逻辑

 /**
     * 入参:userId 
     *      status  班级状态
     *      structureId   体系id
     * 出参:resultCod        //查询是否成功,0-查询不成功,1-查询成功
     *      resultData       //完成结果,0--没有已完成,结训,发放证书的课程, 1--存在1门及以上已完成,结训,发证书的课程
     * @param request
     * @return
     */

    @SuppressWarnings({"unchecked", "unused"})
    @RequestMapping("/findStudentIsFinish")
    public Result findStudentIsFinish(HttpServletRequest request) {
        Result result = new Result();
        try {
            Dto paramDto = WebUtils.getParamAsDto(request);//解析http传进来的json文件
			//将json文件中的参数获取出来
			//感觉有点多余了……,可能方便参数校验
            String userId = (String) paramDto.get("userId");
            Integer status = (Integer) paramDto.get("status");
            Integer structureId = (Integer) paramDto.get("structureId");

            LOG.debug("userId = "+ userId);
            LOG.debug("status = "+ status);
            LOG.debug("structureId = "+ structureId);
            //参数校验
             if (xxxxxUtils.isEmpty(userId)||xxxxxUtils.isEmpty(status)||xxxxxUtils.isEmpty(structureId)) {
                return Result.getParamNullResult();
             }
			//又把参数填回去了……
            Dto finallyDto = new BaseDto();
            finallyDto.put("user_id",userId);
            finallyDto.put("status", status);
            finallyDto.put("structure_id", structureId);
            //查询满足条件的课程总数并且返回isFinish
            Integer isFinish = xxxxxService.isFinish(finallyDto);

            result.setResultCode(xxxxx.SUCCESS);
            result.setResultMsg("查询成功!");
            result.setResultData(isFinish);
        }
        catch (Exception e) {
            //异常处理
            result.setResultCode(xxxxx.FAILURE);
            result.setResultMsg("查询失败,请检查!");
            LOG.info("查询失败:",e);
        }
        return result;
    }
}

之后就是在xxxxxService.java文件里声明刚刚提到的isFinish(finallyDto)方法

    Integer isFinish(Dto finallyDto);

再然后就是在xxxxxServiceImpl.java文件里实现isFinish(finallyDto)方法

public Integer isFinish(Dto finallyDto) {
		Integer isFinish = 0;
		int classCount = classStudentDao.findFinishNum(finallyDto);
		//isFinish 默认为0,若classCount>=1,return 1
		logger.info("classCount:"+classCount+"   <----查询出的满足条件的课程数");
		if(classCount < 1) {
			return isFinish;
		}else{
			return  isFinish + 1;
		}
	}
}

之后在xxxxxDao.java里声明这个SQL语句的方法

   int findFinishNum(Dto finallyDto);

最后就是写SQL啦

在xxxxxMapper.xml里写Mybatis代码(小声哔哔: mybatis代码的格式真够复杂的)

 

最后使用Postman调一下接口,调用成功~

到这里接口就算是开发完了,虽然看起来挺简单,但是还是改了好长时间,遇到了不少问题~

遇到的问题

1.Dto传参数 数据类型不对导致参数传不进去。千万注意参数数据类型!!

2.参数名称对不上导致参数传不进去:userId—>user_Id。注意名称要对应!!细心,细心,一定要细心!

虽说接口比较简单,但是也是自己一个人完整的实现的。这次的任务也让我了解了JAVA和springboot的开发流程。过程中也遇到了一些问题,比如参数类型等问题。不过只有不断的写代码,不断的找bug才会使得我们不断进步。

最后也希望各位JAVA小伙伴们多多交流,不断进步!文章有什么问题还请大佬多多指正

你可能感兴趣的:(java,spring,boot,spring)