本阶段把剩余的四个接口编写好!
观察一下,剩余的四个接口其实就是增删改查四项内容了。
一、增(增加一个女生,路径:/girls ,方式:POST)
类似与第一个接口,这个接口写法代码如下(在GirlController中编写):
/**
* 新增一个女生 POST方式
*/
@PostMapping(value = "/girls")
public Girl girlAdd(@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl=new Girl();
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
}
下面解释一下这段代码,首先这个接口的请求方式是post类型的,路径还是/girls,因为是post类型的,所以需要我们添加推送参数,这里使用了@RequestParam,之前已经学习过,这里不再介绍;再往下是new一个girl,然后为其设置cupSize和age,最后调用我们之前写过的GirlRespositiory接口的save方法进行保存!下面使用postman进行接口测试(上节使用的是Fiddle,这里再学习一种新的测试接口的工具)。
首先运行代码,然后打开postman,输入我们的url、请求方式和请求参数如下图:
然后点击Send的确定按钮,在下面的Body部分的结果如下图:
这里我的id是4是因为我点了两次,下面我们再去数据库验证是否插入到了数据库。
由上图可得,数据库中已经插入成功!第二个接口也编写好了!
二、查(通过id查询一个女生,路径:/girls/id ,方式:GET)
同上,在GirlController中编写一下代码:
/**
* 通过id查询一个女生
*/
@GetMapping(value = "/girls/{id}")
public Girl girlFindOne(@PathVariable("id") Integer id){
return girlRepository.findById(id).get();
}
这里使用@PathVatiable的方式进行通过id查询女生,前面也已经学习过,可以看出来非常简单,运行代码测试即可!
还是使用postman测试接口,先书写我们的url和请求方式如下:
这里我选取的id是4,下面看一下body部分的结果,
查询成功!!!
三、更(根据id更新一个女生,路径:/girls/id ,方式:PUT)
同上,在GirlController中编写一下代码:
/**
* 通过id更新一个女生
*/
@PutMapping(value = "/girls/{id}")
public Girl girlUpdate(@PathVariable("id") Integer id,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl=new Girl();
girl.setId(id);
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
}
下面解释一下这段代码:
要更新一个女生,那就要传入id,cupSize和age三个参数,分别使用了@PathVatiable的方式和@RequestParam,然后再创建一个新的girl,分别给其设置id,cupsize和age,最后调用save方法进行保存,下面运行程序进行接口测试,还是使用postman进行测试接口。
输入url和请求方式以及参数如下。注意:这里的content-type方式为:x-www-form-urlencoded,这是http协议规定的,在put方式的时候使用:
然后确定。查看body部分的结果如下图:
再查看数据库进行验证:
可以看到id为2的属性已经改变,接口测试成功!!
四、删(通过id删除一个女生, 路径:/girls/id ,方式:DELETE)
同上,在GirlController中编写一下代码:
/**
* 通过id删除一个女生
*/
@DeleteMapping(value = "/girls/{id}")
public void girlDelete(@PathVariable("id") Integer id){
girlRepository.deleteById(id);
}
代码跟上面几个接口类似,只不过最后调用的是deleteByid()的方法,然后运行程序进行测试接口,
这里我们测试的是把id为3的删除,运行后观察body部分的结果如下:
body部分为空,下面取数据库看一下id为3的数据是否还存在,
已经不存在,接口测试成功!
最后再补充一个接口,就是我们查询的时候不一定只根据id来查询,也可以根据年龄查询,具体如下:
首先在GirlRepository接口中编写以下代码:
public interface GirlRepository extends JpaRepository<Girl,Integer>{
//通过年龄来查询
public List<Girl> findByAge(Integer age);
}
然后在GirlController中编写下列代码:
/**
* 通过年龄查询女生列表
*/
@GetMapping(value = "/girls/age/{age}")
public List<Girl> girlListByAge (@PathVariable("age") Integer age){
return girlRepository.findByAge(age);
}
这里使用了我们上一步定义好的findByAge方法,然后运行程序进行测试,
这里我们通过age=18来查询,下面看一下结果:
查询成功,说明接口正确!
这也就说明了哦我们可以通过修改dto达到我们可以根据自己指定的字段进行查询的目的。
关于jpa的使用就学习到这儿。